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);
|