资源简介

基于AD绝对差和Census变换的立体匹配算法代码,需要的环境是:opencv3+pcl+boost+openmp

资源截图

代码片段和文件信息

#include “adcensuscv.h“

ADCensusCV::ADCensusCV(const cv::Mat &leftImage const cv::Mat &rightImage cv::Size censusWin float lambdaAD float lambdaCensus)
{
    this->leftImage = leftImage;
    this->rightImage = rightImage;
    this->censusWin = censusWin;
    this->lambdaAD = lambdaAD;
    this->lambdaCensus = lambdaCensus;
}

// 计算图像的AD匹配代价计算
// 输入:目标点在左右图像中的搜索位置
// 输出:目标点在左右图像中的相似度,值越小相似度越高,作为匹配点的可能性就越高
float ADCensusCV::ad(int wL int hL int wR int hR) const
{
    float dist = 0; //初始视差
    const cv::Vec3b &colorLP = leftImage.at(hL wL);
    const cv::Vec3b &colorRP = rightImage.at(hR wR);

    for(uchar color = 0; color < 3; ++color)
    {
        dist += std::abs(colorLP[color] - colorRP[color]);
    }
    return (dist / 3); //rgb三个分量视差的平均值
}

// 计算图像的census匹配代价计算
// 输入:目标点在左右图像中的搜索位置
// 输出:目标点在左右图像中的相似度,值越小相似度越高,作为匹配点的可能性就越高
float ADCensusCV::census(int wL int hL int wR int hR) const
{
    float dist = 0;
    const cv::Vec3b &colorRefL = leftImage.at(hL wL); //左图目标点p
    const cv::Vec3b &colorRefR = rightImage.at(hR wR); //右图目标点p

//遍历census窗口像素,估算窗口内各个位置像素相似度,相加作为目标点的相似度
    for(int h = -censusWin.height / 2; h <= censusWin.height / 2; ++h)
    {
        for(int w = -censusWin.width / 2; w <= censusWin.width / 2; ++w)
        {
            const cv::Vec3b &colorLP = leftImage.at(hL + h wL + w);
            const cv::Vec3b &colorRP = rightImage.at(hR + h wR + w);
            for(uchar color = 0; color < 3; ++color)
            {
                // bool diff = (colorLP[color] < colorRefL[color]) ^ (colorRP[color] < colorRefR[color]);
                bool diff = (colorLP[color] - colorRefL[color]) * (colorRP[color] - colorRefR[color]) < 0;
                dist += (diff)? 1: 0;
            }
        }
    }

    return dist;
}

// AD和Census匹配代价结合
// 输入:目标点在左右图像中的搜索位置
// 输出:目标点在左右图像中的相似度,值越小相似度越高,作为匹配点的可能性就越高
float ADCensusCV::adCensus(int wL int hL int wR int hR) const
{
    float dist;

    // compute Absolute Difference cost
    float cAD = ad(wL hL wR hR);

    // compute Census cost
    float cCensus = census(wL hL wR hR);

    // combine the two costs
// 将两种匹配代价进行归一化,并相加
    dist = 1 - exp(-cAD / lambdaAD); 
    dist += 1 - exp(-cCensus / lambdaCensus);

    return dist;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-11-24 17:07  ADCensus\
     目录           0  2019-11-24 17:06  ADCensus\.vs\
     目录           0  2019-11-24 17:06  ADCensus\.vs\ADCensus\
     目录           0  2019-11-24 17:06  ADCensus\.vs\ADCensus\v15\
     文件      253952  2019-11-24 10:00  ADCensus\.vs\ADCensus\v15\Browse.VC.db
     目录           0  2019-11-24 17:06  ADCensus\.vs\ADCensus\v16\
     文件        5632  2019-11-24 09:55  ADCensus\.vs\ADCensus\v16\.suo
     文件      253952  2019-11-24 09:55  ADCensus\.vs\ADCensus\v16\Browse.VC.db
     文件        2579  2019-11-24 14:54  ADCensus\adcensuscv.cpp
     文件         644  2019-11-24 14:53  ADCensus\adcensuscv.h
     文件        5441  2019-11-24 14:50  ADCensus\aggregation.cpp
     文件        1213  2019-11-24 14:53  ADCensus\aggregation.h
     文件        1546  2019-11-24 14:27  ADCensus\CMakeLists.txt
     文件         435  2019-11-24 14:15  ADCensus\common.h
     文件       16049  2019-11-24 14:53  ADCensus\disparityrefinement.cpp
     文件        1600  2019-11-24 14:50  ADCensus\disparityrefinement.h
     文件        3553  2019-11-24 14:56  ADCensus\imageprocessor.cpp
     文件         534  2019-11-24 14:50  ADCensus\imageprocessor.h
     文件         415  2016-08-27 19:53  ADCensus\images.xml
     文件       12937  2016-01-01 04:46  ADCensus\libconfig.h
     文件       14065  2019-11-24 14:22  ADCensus\libconfig.h++
     文件       11891  2019-11-24 14:59  ADCensus\main.cpp
     文件        9791  2019-11-24 15:00  ADCensus\myTest.cpp
     目录           0  2019-11-24 17:06  ADCensus\sample\
     文件        1535  2016-08-27 19:53  ADCensus\sample\config.cfg
     文件           0  2016-08-27 19:53  ADCensus\sample\extrinsics.yml
     文件         415  2016-08-27 19:53  ADCensus\sample\images.xml
     目录           0  2019-11-24 17:06  ADCensus\sample\test_images\
     文件      362946  2016-08-27 19:53  ADCensus\sample\test_images\01left_picture.png
     文件      364420  2016-08-27 19:53  ADCensus\sample\test_images\01right_picture.png
     文件      342036  2016-08-27 19:53  ADCensus\sample\test_images\02left_picture.png
............此处省略9个文件信息

评论

共有 条评论