64,654
社区成员
发帖
与我相关
我的任务
分享
int i, j, s,w ,nmax,nmin;
int rh=3, rw=3;
for(j=rh; j<nHeight-rh; j++)
{
w=j*nWidth;
for(i=rw; i<nWidth-rw; i++)
{
nmax=0,nmin=255;
for (int dj=-rh;dj<=rh;dj++)
for (int di=-rw;di<=rw;di++)
{
if (pbGray[w+dj*nWidth+i+di]>nmax)
{
nmax=pbGray[w+dj*nWidth+i+di];
}
if (pbGray[w+dj*nWidth+i+di]<nmin)
{
nmin=pbGray[w+dj*nWidth+i+di];
}
}
s=nmax-nmin;
if( s < 50)
pbEdge[w+i] = 128;
else if(s>50&&(nmax+nmin)<2*pbGray[w+i])
pbEdge[w+i] = 255;
else if(s>50&&(nmax+nmin)>2*pbGray[w+i])
pbEdge[w+i] = 0;
}
}
File: "C:\Program Files\OpenCV\modules\objdetect\src\matching.cpp":
13: /*
14: // Function for convolution computation
15: //
16: // INPUT
17: // Fi - filter object
18: // map - feature map
19: // OUTPUT
20: // f - the convolution
21: // RESULT
22: // Error status
23: */
24: int convolution(const CvLSVMFilterObject *Fi, const CvLSVMFeatureMap *map, float *f)
25: {
26: int n1, m1, n2, m2, p, size, diff1, diff2;
27: int i1, i2, j1, j2, k;
28: float tmp_f1, tmp_f2, tmp_f3, tmp_f4;
29: float *pMap = NULL;
30: float *pH = NULL;
31:
32: n1 = map->sizeY;
33: m1 = map->sizeX;
34: n2 = Fi->sizeY;
35: m2 = Fi->sizeX;
36: p = map->p;
37:
38: diff1 = n1 - n2 + 1;
39: diff2 = m1 - m2 + 1;
40: size = diff1 * diff2;
41: for (j1 = diff2 - 1; j1 >= 0; j1--)
42: {
43:
44: for (i1 = diff1 - 1; i1 >= 0; i1--)
45: {
46: tmp_f1 = 0.0f;
47: tmp_f2 = 0.0f;
48: tmp_f3 = 0.0f;
49: tmp_f4 = 0.0f;
50: for (i2 = 0; i2 < n2; i2++)
51: {
52: for (j2 = 0; j2 < m2; j2++)
53: {
54: pMap = map->Map + (i1 + i2) * m1 * p + (j1 + j2) * p;//sm2
55: pH = Fi->H + (i2 * m2 + j2) * p;//sm2
56: for (k = 0; k < p/4; k++)
57: {
58:
59: tmp_f1 += pMap[4*k]*pH[4*k];//sm2
60: tmp_f2 += pMap[4*k+1]*pH[4*k+1];
61: tmp_f3 += pMap[4*k+2]*pH[4*k+2];
62: tmp_f4 += pMap[4*k+3]*pH[4*k+3];
63: }
64:
65: if (p%4==1)
66: {
67: tmp_f1 += pH[p-1]*pMap[p-1];
68: }
69: else
70: {
71: if (p%4==2)
72: {
73: tmp_f1 += pH[p-2]*pMap[p-2] + pH[p-1]*pMap[p-1];
74: }
75: else
76: {
77: if (p%4==3)
78: {
79: tmp_f1 += pH[p-3]*pMap[p-3] + pH[p-2]*pMap[p-2] + pH[p-1]*pMap[p-1];
80: }
81: }
82: }
83:
84: }
85: }
86: f[i1 * diff2 + j1] = tmp_f1 + tmp_f2 + tmp_f3 + tmp_f4;//sm1
87: }
88: }
89: return LATENT_SVM_OK;
90: }