MCPcopy Create free account
hub / github.com/PRiME-project/PRiMEStereoMatch / buildCV_right_thread

Method buildCV_right_thread

DE_APP/src/CVC.cpp:295–362  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

293}
294
295void *CVC::buildCV_right_thread(void *thread_arg)
296{
297 struct buildCV_TD *t_data;
298 t_data = (struct buildCV_TD *) thread_arg;
299 const Mat lImg = *t_data->lImg;
300 const Mat rImg = *t_data->rImg;
301 const Mat lGrdX = *t_data->lGrdX;
302 const Mat rGrdX = *t_data->rGrdX;
303 const int d = t_data->d;
304 Mat* costVol = t_data->costVol;
305
306 int hei = lImg.rows;
307 int wid = lImg.cols;
308
309 //32 bit float data
310 if(lImg.type() == CV_32FC3 && rImg.type() == CV_32FC3)
311 {
312 for( int y = 0; y < hei; y ++ ) {
313 float* lData = ( float* ) lImg.ptr<float>( y );
314 float* rData = ( float* ) rImg.ptr<float>( y );
315 float* lGData = ( float* ) lGrdX.ptr<float>( y );
316 float* rGData = ( float* ) rGrdX.ptr<float>( y );
317 float* cost = ( float* ) costVol->ptr<float>( y );
318 for( int x = 0; x < wid - d; x ++ ) {
319 float* lC = lData + 3 * x;
320 float* rC = rData + 3 * ( x + d );
321 float* lG = lGData + x;
322 float* rG = rGData + x + d;
323 cost[x] = myCostGrd( lC, rC, lG, rG );
324 }
325 for( int x = wid - d; x < wid; x ++ ) {
326 float* lC = lData + 3 * x;
327 float* lG = lGData + x;
328 cost[x] = myCostGrd( lC, lG );
329 }
330 }
331 }
332 //8 bit unsigned char data
333 else if(lImg.type() == CV_8UC3 && rImg.type() == CV_8UC3)
334 {
335 for( int y = 0; y < hei; y ++ ) {
336 uchar* lData = ( uchar* ) lImg.ptr<uchar>( y );
337 uchar* rData = ( uchar* ) rImg.ptr<uchar>( y );
338 uchar* lGData = ( uchar* ) lGrdX.ptr<uchar>( y );
339 uchar* rGData = ( uchar* ) rGrdX.ptr<uchar>( y );
340 uchar* cost = ( uchar* ) costVol->ptr<uchar>( y );
341 for( int x = 0; x < wid; x ++ ) {
342 if( x + d < wid ) {
343 uchar* lC = lData + 3 * x;
344 uchar* rC = rData + 3 * ( x + d );
345 uchar* lG = lGData + x;
346 uchar* rG = rGData + x + d;
347 cost[x] = myCostGrd( lC, rC, lG, rG );
348 } else {
349 uchar* lC = lData + 3 * x;
350 uchar* lG = lGData + x;
351 cost[x] = myCostGrd( lC, lG );
352 }

Callers

nothing calls this directly

Calls 1

myCostGrdFunction · 0.85

Tested by

no test coverage detected