日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【计算机视觉基础】IPM

發布時間:2023/12/19 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 【计算机视觉基础】IPM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

IPM

code

#if 0
void xyp2ipmp(cv::Mat& xyp, cv::Mat& ipmp, cv::Mat& xylim, Size& sz){

    //xylimist_[0]-latteral/xylimist_[1]-longitudinal...
    //ipmp-row0-cols-latteral/ipmp-row1-rows-longitudinal...

    double xmin = 0, xmax = 0, ymin = 0, ymax = 0;
    minMaxLoc(xylim.row(0), &xmin, &xmax);
    minMaxLoc(xylim.row(1), &ymin, &ymax);

    double stepcol = (xmax - xmin) / sz.width;
    double steprow = (ymax - ymin) / sz.height;

    cv::Mat tempx = cv::Mat::ones(1, xyp.cols, CV_64FC1) * xmin;
    cv::Mat tempy = cv::Mat::ones(1, xyp.cols, CV_64FC1) * ymax;

    ipmp = cv::Mat::zeros(2, xyp.cols, CV_64FC1);
    ipmp.rowRange(0, 1) = ( xyp.rowRange(0, 1) - tempx ) / stepcol;
    ipmp.rowRange(1, 2) = ( tempy - xyp.rowRange(1, 2) ) / steprow;
    for (int i = 0; i < xyp.cols; i++ )
    {
        double y = ipmp.at<double>(1, i);
        if( y > ymax){
            ipmp.at<double>(1, i) = ymax;
        }
    }
    
}
#endif

code

#if 0
    //IPM-parameters...    
    double left_upper_x = 1;//left
    double left_upper_y = 330;//top-greater than 320...
    double right_down_x = 1280;//right...
    double right_down_y = 720;//bottom...
    double uvlimist[8] = { left_upper_x, right_down_x, left_upper_x, right_down_x, 
                           left_upper_y, left_upper_y, right_down_y, right_down_y };
    cv::Mat uvlmt = cv::Mat(2, 4, CV_64FC1, uvlimist);

     //I2G
    cv::Mat xylimit;
    imagetoground(uvlmt, xylimit, h, roll, pitch, camera_param_KK);
     //G2I
    cv::Mat uvgd;
    cv::Size sz = cv::Size(PROB_W, PROB_H);//Size(srcimage.cols, srcimage.rows)
    groundtoimage(xylimit, uvgd, sz, h, roll, pitch, camera_param_KK );
#endif

code

#if 1
        //IPM...
        cv::Mat outimage, coord;
        src2ipm( prob, uvgd, outimage, coord, sz, h, roll, pitch, camera_param_KK );
        outimage.convertTo(outimage, CV_8UC1);
        cv::Mat ipm3 = cv::Mat::zeros(PROB_H, PROB_W, CV_8UC3);
        cv::cvtColor(outimage, ipm3, COLOR_GRAY2BGR);

        //
        //cv::Mat uvp = cv::Mat::zeros(2, probp.size(), CV_8UC1);
        cv::Mat uvp = cv::Mat::zeros(2, probp.size(), CV_64FC1);//data-type...
        for (unsigned int i = 0; i <probp.size(); i++ )
        {
            uvp.at<double>(0, i) = probp[i].x;//cols-width.
            uvp.at<double>(1, i) = probp[i].y;//rows-height.
            //std::cout <<  uvp.at<double>(0, i) << "-----" << probp[i].x <<std::endl;
            //std::cout <<  uvp.at<double>(1, i) << "-----" << probp[i].y <<std::endl;
        }
        cv::Mat ipmps, xyp;
        //std::cout << "uvp:" << uvp << std::endl;
        imagetoground(uvp, xyp, h, roll, pitch, camera_param_KK);
        xyp2ipmp(xyp, ipmps, xylimit, sz);
        ipmps.convertTo(ipmps, CV_32SC1);
        for (unsigned int i = 0; i <probp.size(); i++ )
        {
            cv::Point ipmp;
            ipmp.x = ipmps.at<int>(0, i);
            ipmp.y = ipmps.at<int>(1, i);
            if (plabel[i] == 1)//-barrier
            {
                cv::circle(ipm3, ipmp, 3, cv::Scalar(240, 32, 160), -1); //
                //cv::putText(orig, std::to_string(i), pt, CV_FONT_NORMAL, 0.1, cv::Scalar(255, 255, 255));
            }
            else if (plabel[i] == 0)//-undifined
            {
                cv::circle(ipm3, ipmp, 3, cv::Scalar(255, 255, 0), -1); //
                //cv::putText(orig, std::to_string(i), pt, CV_FONT_NORMAL, 0.1, cv::Scalar(255, 255, 255));
            }
    
        }

        cv::imshow("ipmp", ipm3);
        cv::waitKey(1);//unit-ms.
        sprintf(output_path,"./ipmp/00000%05d.png",cnt);
        cv::imwrite(output_path, ipm3);
#endif

參考

1. matlab_逆透視變換詳解 及 代碼實現(一);

2. matlab_逆透視變換詳解 及 代碼實現(二);

總結

以上是生活随笔為你收集整理的【计算机视觉基础】IPM的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。