OpenCV: Shift/Align face image relative to reference Image (Image Registration)

前端 未结 1 543
我寻月下人不归
我寻月下人不归 2021-01-03 12:13

I am new to OpenCV2 and working on a project in emotion recognition and would like to align a facial image in relation to a reference facial image. I would like to get the i

相关标签:
1条回答
  • 2021-01-03 12:57

    cv::Mat does support ROI. (But it does not support COI - channel-of-interest.)

    To apply ROI you can use operator() or special constructor:

    Mat refimgROI  = faceIMGstore[1](faceROIstore[1]); //reference image ROI
    Mat dispimgROI(faceIMGstore[52], faceROIstore[52]); // "displaced" version of reference image ROI
    

    And to find the best position inside a displaced image you can utilize matchTemplate function.


    Based on your comments I can suggest the following code which will find the best position of reference patch nearby the second (displaced) patch:

    Mat ref = faceIMGstore[1](faceROIstore[1]);
    Mat disp = faceIMGstore[52](faceROIstore[52]);
    
    disp = disp.adjustROI(5,5,5,5); //allow 5 pixel max adjustment in any direction
    if(disp.cols < ref.cols || disp.rows < ref.rows)
        return 0;
    Mat map;
    cv::matchTemplate( disp, ref, map, CV_TM_SQDIFF_NORMED );
    
    Point  minLoc;
    cv::minMaxLoc( map, 0, &minLoc );
    
    Mat adjusted = disp(Rect(minLoc.x, minLoc.y, ref.cols, ref.rows));
    
    0 讨论(0)
提交回复
热议问题