Subversion Repositories seema-scanner

Rev

Rev 195 | Rev 207 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 195 Rev 200
Line 109... Line 109...
109
 
109
 
110
    cv::Mat up0Equivalent = up0Secondary - up0Primary;
110
    cv::Mat up0Equivalent = up0Secondary - up0Primary;
111
    up0Equivalent = cvtools::modulo(up0Equivalent, 2.0*CV_PI);
111
    up0Equivalent = cvtools::modulo(up0Equivalent, 2.0*CV_PI);
112
    cv::Mat up0 = unwrapWithCue(up0Primary, up0Equivalent, nPeriodsPrimary);
112
    cv::Mat up0 = unwrapWithCue(up0Primary, up0Equivalent, nPeriodsPrimary);
113
    up0 *= screenCols/(2.0*CV_PI);
113
    up0 *= screenCols/(2.0*CV_PI);
-
 
114
 
-
 
115
    // Signal energy at unit frequency
114
    cv::Mat amplitude0;
116
    cv::Mat amplitude0Primary, amplitude0Secondary;
115
    cv::magnitude(F0Primary[2], -F0Primary[3], amplitude0);
117
    cv::magnitude(F0Primary[2], -F0Primary[3], amplitude0Primary);
-
 
118
    cv::magnitude(F0Secondary[2], -F0Secondary[3], amplitude0Secondary);
116
 
119
 
117
    // Collected signal energy at higher frequencies
120
    // Collected signal energy at higher frequencies
118
    cv::Mat energy0Primary(frameRectRows, frameRectCols, CV_32F, cv::Scalar(0.0));
121
    cv::Mat energy0Primary(frameRectRows, frameRectCols, CV_32F, cv::Scalar(0.0));
119
    for(unsigned int i=0; i<nStepsPrimary-1; i++){
122
    for(unsigned int i=0; i<nStepsPrimary-1; i++){
120
        cv::Mat magnitude;
123
        cv::Mat magnitude;
Line 132... Line 135...
132
    #ifdef QT_DEBUG
135
    #ifdef QT_DEBUG
133
        cvtools::writeMat(up0Primary, "up0Primary.mat", "up0Primary");
136
        cvtools::writeMat(up0Primary, "up0Primary.mat", "up0Primary");
134
        cvtools::writeMat(up0Secondary, "up0Secondary.mat", "up0Secondary");
137
        cvtools::writeMat(up0Secondary, "up0Secondary.mat", "up0Secondary");
135
        cvtools::writeMat(up0Equivalent, "up0Equivalent.mat", "up0Equivalent");
138
        cvtools::writeMat(up0Equivalent, "up0Equivalent.mat", "up0Equivalent");
136
        cvtools::writeMat(up0, "up0.mat", "up0");
139
        cvtools::writeMat(up0, "up0.mat", "up0");
137
        cvtools::writeMat(amplitude0, "amplitude0.mat", "amplitude0");
140
        cvtools::writeMat(amplitude0Primary, "amplitude0Primary.mat", "amplitude0Primary");
138
        cvtools::writeMat(energy0Primary, "energy0Primary.mat", "energy0Primary");
141
        cvtools::writeMat(energy0Primary, "energy0Primary.mat", "energy0Primary");
139
        cvtools::writeMat(energy0Secondary, "energy0Secondary.mat", "energy0Secondary");
142
        cvtools::writeMat(energy0Secondary, "energy0Secondary.mat", "energy0Secondary");
140
    #endif
143
    #endif
141
 
144
 
142
    // Decode camera1
145
    // Decode camera1
Line 153... Line 156...
153
 
156
 
154
    cv::Mat up1Equivalent = up1Secondary - up1Primary;
157
    cv::Mat up1Equivalent = up1Secondary - up1Primary;
155
    up1Equivalent = cvtools::modulo(up1Equivalent, 2.0*CV_PI);
158
    up1Equivalent = cvtools::modulo(up1Equivalent, 2.0*CV_PI);
156
    cv::Mat up1 = unwrapWithCue(up1Primary, up1Equivalent, nPeriodsPrimary);
159
    cv::Mat up1 = unwrapWithCue(up1Primary, up1Equivalent, nPeriodsPrimary);
157
    up1 *= screenCols/(2.0*CV_PI);
160
    up1 *= screenCols/(2.0*CV_PI);
-
 
161
 
-
 
162
    // Signal energy at unit frequency
158
    cv::Mat amplitude1;
163
    cv::Mat amplitude1Primary, amplitude1Secondary;
159
    cv::magnitude(F1Primary[2], -F1Primary[3], amplitude1);
164
    cv::magnitude(F1Primary[2], -F1Primary[3], amplitude1Primary);
-
 
165
    cv::magnitude(F1Secondary[2], -F1Secondary[3], amplitude1Secondary);
160
 
166
 
161
    // Collected signal energy at higher frequencies
167
    // Collected signal energy at higher frequencies
162
    cv::Mat energy1Primary(frameRectRows, frameRectCols, CV_32F, cv::Scalar(0.0));
168
    cv::Mat energy1Primary(frameRectRows, frameRectCols, CV_32F, cv::Scalar(0.0));
163
    for(unsigned int i=0; i<nStepsPrimary-1; i++){
169
    for(unsigned int i=0; i<nStepsPrimary-1; i++){
164
        cv::Mat magnitude;
170
        cv::Mat magnitude;
Line 196... Line 202...
196
    occlusion0 = (occlusion0 > 25) & (occlusion0 < 250);
202
    occlusion0 = (occlusion0 > 25) & (occlusion0 < 250);
197
    cv::subtract(frames1Rect[0], frames1Rect[1], occlusion1);
203
    cv::subtract(frames1Rect[0], frames1Rect[1], occlusion1);
198
    occlusion1 = (occlusion1 > 25) & (occlusion1 < 250);
204
    occlusion1 = (occlusion1 > 25) & (occlusion1 < 250);
199
 
205
 
200
    // Threshold on energy at primary frequency
206
    // Threshold on energy at primary frequency
201
    occlusion0 = occlusion0 & (amplitude0 > 5.0*nStepsPrimary);
207
    occlusion0 = occlusion0 & (amplitude0Primary > 5.0*nStepsPrimary);
202
    occlusion1 = occlusion1 & (amplitude1 > 5.0*nStepsPrimary);
208
    occlusion1 = occlusion1 & (amplitude1Primary > 5.0*nStepsPrimary);
203
 
209
 
204
    // Threshold on energy ratios
210
    // Threshold on energy ratios
205
    occlusion0 = occlusion0 & (amplitude0 > 0.85*energy0Primary);
211
    occlusion0 = occlusion0 & (amplitude0Primary > 0.85*energy0Primary);
206
    occlusion0 = occlusion0 & (amplitude0 > 0.85*energy0Secondary);
212
    occlusion0 = occlusion0 & (amplitude0Secondary > 0.85*energy0Secondary);
207
 
213
 
208
    occlusion1 = occlusion1 & (amplitude1 > 0.85*energy1Primary);
214
    occlusion1 = occlusion1 & (amplitude1Primary > 0.85*energy1Primary);
209
    occlusion1 = occlusion1 & (amplitude1 > 0.85*energy1Secondary);
215
    occlusion1 = occlusion1 & (amplitude1Secondary > 0.85*energy1Secondary);
210
 
216
 
211
//    // Erode occlusion masks
217
//    // Erode occlusion masks
212
//    cv::Mat strel = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(5,5));
218
//    cv::Mat strel = cv::getStructuringElement(cv::MORPH_ELLIPSE, cv::Size(5,5));
213
//    cv::erode(occlusion0, occlusion0, strel);
219
//    cv::erode(occlusion0, occlusion0, strel);
214
//    cv::erode(occlusion1, occlusion1, strel);
220
//    cv::erode(occlusion1, occlusion1, strel);