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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAD立体匹配算法在opencv中的实现

發布時間:2025/7/25 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAD立体匹配算法在opencv中的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

FROM:http://blog.csdn.net/tulun/article/details/6456188

SAD算法具體原理見相關圖像處理書籍。

該程序是opencv中文論壇的牛人貢獻的,感謝他的工作。

?

(程序所需圖片可以在網上找如http://vision.middlebury.edu/stereo/data/scenes2003/)

[c-sharp] view plaincopyprint?
  • //?Sum?of?Absolute?Difference(SAD)???
  • ?
  • #include?<iostream>??
  • #include?<stdio.h>??
  • #include?<stdlib.h>??
  • #include?<cv.h>??
  • #include?<cxcore.h>??
  • #include?<highgui.h>??
  • #include?<math.h>??
  • #include?<ctime>??
  • ??
  • using?namespace?std;??
  • ??
  • template<class?T>?class?Image??
  • {??
  • private:??
  • ????IplImage*?imgp;??
  • ??
  • public:??
  • ????Image(IplImage*?img=0){imgp=img;}??
  • ????~Image(){imgp=0;}??
  • ????void?operator=(IplImage*?img){imgp=img;}??
  • ????inline?T*?operator[](const?int?rowIndx)??
  • ????{??
  • ????????return((T*)(imgp->imageData+rowIndx*imgp->widthStep));??
  • ????}??
  • };??
  • ??
  • typedef?struct??
  • {??
  • ????unsigned?char?b,g,r;??
  • }RgbPixel;??
  • ??
  • typedef?struct??
  • {??
  • ????float?b,g,r;??
  • }RgbPixelFloat;??
  • ??
  • typedef?Image<RgbPixel>?RgbImage;??
  • typedef?Image<RgbPixelFloat>?RgbImageFloat;??
  • typedef?Image<unsigned?char>?BwImage;??
  • typedef?Image<float>?BwImageFloat;??
  • ??
  • //display?an?image?in?a?new?window?with?title?to?be?given.??
  • void?displayImageNewWindow(char*?title,CvArr*?img)??
  • {??
  • ????cvNamedWindow(title,?CV_WINDOW_AUTOSIZE?);??
  • ????cvShowImage(title,img);??
  • }??
  • ??
  • int?getMaxMin(double?value[],int?valueSize,?int?maxmin)??
  • {??
  • ????int?pos=0;??
  • ????int?i=0;??
  • ????double?max1=-1;//?-999999;??
  • ????double?min1=999999;??
  • ?????????
  • ????if?(maxmin==1)??
  • ????{??
  • ????????//find?max??
  • ????????for?(i=0;i<valueSize;i++)??
  • ????????{??
  • ????????????//find?the?index?with?the?max?value;??
  • ????????????if?(value[i]>max1)??
  • ????????????{??
  • ????????????????pos=i;??
  • ????????????????max1=value[i];??
  • ????????????}??
  • ????????}??
  • ????}??
  • ?????????
  • ????if?(maxmin==0)??
  • ????{??
  • ????????//find?min??
  • ????????for?(i=0;i<valueSize;i++)??
  • ????????{??
  • ????????????//find?the?index?with?the?minimum?value;??
  • ????????????if?(value[i]<min1)??
  • ????????????{??
  • ????????????????pos=i;??
  • ????????????????min1=value[i];??
  • ????????????}??
  • ????????}???????????
  • ????}??
  • ????????????
  • ????return?pos;??
  • }??
  • ??
  • IplImage*?generateDisparityImage(IplImage*?greyLeftImg32,IplImage*?greyRightImg32,int?windowSize,int?DSR)??
  • {??
  • ????int?offset=floor((double)windowSize/2);??
  • ????int?height=greyLeftImg32->height;??
  • ????int?width=greyLeftImg32->width;??
  • ????double*?localSAD=new?double[DSR];??
  • ??
  • ????int?x=0,?y=0,d=0,m=0;??
  • ????int?N=windowSize;??????????????
  • ??
  • ????IplImage*?winImg=cvCreateImage(cvSize(N,N),32,1);//mySubImage(greyLeftImg32,cvRect(0,0,N,N));??
  • ?????
  • ????IplImage*?disparity=cvCreateImage(cvSize(width,height),8,1);//or?IPL_DEPTH_8U??
  • ????BwImage?imgA(disparity);??
  • ?????
  • ????for?(y=0;y<height;y++)??
  • ????{??
  • ??????for?(x=0;x<width;x++)??
  • ??????{??
  • ?????????imgA[y][x]=0;??
  • ??????}??
  • ????}??
  • ?????????
  • ????CvScalar?sum;??
  • ????//CvScalar?s2;??
  • ????for?(y=0;y<height-N;y++)??
  • ????{???
  • ????????//height-N??
  • ????????for?(x=0;x<width-N;x++)??
  • ????????{??
  • ????????????//width-N??
  • ????????????cvSetImageROI(greyLeftImg32,?cvRect(x,y,N,N));??
  • ????????????d=0;???????????
  • ????????????//initialise?localSAD??
  • ????????????for?(m=0;m<DSR;m++)??
  • ????????????{??
  • ????????????????localSAD[m]=0;??
  • ????????????}??
  • ???????
  • ????????????//start?matching??
  • ?????????????do{??
  • ????????????????if?(x-d>=0)??
  • ????????????????{??
  • ????????????????????cvSetImageROI(greyRightImg32,?cvRect(x-d,y,N,N));??
  • ????????????????}??
  • ????????????????else??
  • ????????????????{??
  • ????????????????break;??
  • ????????????????}??
  • ??
  • ????????????????cvAbsDiff(greyLeftImg32,greyRightImg32,winImg);//absolute?difference??
  • ????????????????sum=cvSum(winImg);//sum??
  • ????????????????localSAD[d]=sum.val[0];//0?means?single?channel??
  • ??
  • ????????????????cvResetImageROI(greyRightImg32);??
  • ????????????????d++;??
  • ????????????}while(d<=DSR);??
  • ???????
  • ????????????//to?find?the?best?d?and?store??
  • ????????????imgA[y+offset][x+offset]=getMaxMin(localSAD,DSR,0)*16;?//0?means?return?minimum?index??
  • ????????????cvResetImageROI(greyLeftImg32);??
  • ????????}//x??
  • ????????if?(y%10==0)??
  • ????????????cout<<"row="<<y<<"?of?"<<height<<endl;???
  • ????}//y??
  • ??
  • ????cvReleaseImage(&winImg);??
  • ????//cvReleaseImage(&rightWinImg);??
  • ?????
  • ????return?disparity;??
  • }??
  • ??
  • int?main?(int?argc,?char?*?const?argv[])???
  • {??
  • ????cout?<<?"Sum?of?Absolute?Difference(SAD)?Strereo?Vision"<<endl;???
  • ?????????
  • ????//**********image?input*********************//???
  • ????char*?filename1="L.jpg";//im2_cone.png??
  • ????IplImage*?greyLeftImg=?cvLoadImage(filename1,0);??
  • ????char*?filename2="R.jpg";??
  • ????IplImage*?greyRightImg=?cvLoadImage(filename2,0);??
  • ?????????
  • ????if?(greyLeftImg==NULL){cout?<<?"No?valid?image?input."<<endl;?return?1;}??
  • ????if?(greyRightImg==NULL){cout?<<?"No?valid?image?input."<<endl;?return?1;}??
  • ??
  • ????int?width=greyLeftImg->width;??
  • ????int?height=greyLeftImg->height;???
  • ??
  • ????/****************8U?to?32F**********************/??
  • ????IplImage*?greyLeftImg32=cvCreateImage(cvSize(width,height),32,1);//IPL_DEPTH_32F??
  • ????IplImage*?greyRightImg32=cvCreateImage(cvSize(width,height),32,1);??
  • ????cvConvertScale(greyLeftImg,?greyLeftImg32,?1/255.);??
  • ????cvConvertScale(greyRightImg,?greyRightImg32,?1/255.);//1/255.?equals?to?1/255.0??
  • ?????????
  • ????//-------------obtain?disparity?image----------------??
  • ????time_t?tstart,?tend;??
  • ????tstart?=?time(0);??
  • ????int?windowSize=13,DSR=20;//Disparity?Search?Range??
  • ????IplImage*?disparity32=generateDisparityImage(greyLeftImg32,greyRightImg32,windowSize,DSR);??
  • ????tend?=?time(0);??
  • ????cout?<<?"It?took?"<<?difftime(tend,?tstart)?<<"?second(s)."<<?endl;??
  • ??
  • ????displayImageNewWindow("Dispairty?Image",disparity32);??
  • ????displayImageNewWindow("Left?Image",greyLeftImg32);??
  • ????displayImageNewWindow("Right?Image",greyRightImg32);??
  • ?????????
  • ????//cvSaveImage("D:/OpenCV_stuff/SampleImages/disparitySAD.jpg",disparity32);??
  • ??
  • ????//********destroy?window************/??
  • ????cvWaitKey(0);??
  • ????cvReleaseImage(&greyLeftImg32);??
  • ????cvReleaseImage(&greyRightImg32);??
  • ????cvReleaseImage(&greyLeftImg);??
  • ????cvReleaseImage(&greyRightImg);??
  • ????cvReleaseImage(&disparity32);??
  • ????cvDestroyWindow("Left?Image");??
  • ????cvDestroyWindow("Right?Image");??
  • ????cvDestroyWindow("Dispairty?Image");??
  • ????return?0;??
  • }?
  • 總結

    以上是生活随笔為你收集整理的SAD立体匹配算法在opencv中的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 国产三级免费观看 | jizz日本在线 | 国产成人麻豆精品午夜在线 | 天天色影网 | 国产一卡二卡 | 二男一女一级一片 | 白丝少妇| 久久91av| 色播导航 | 懂色av一区二区夜夜嗨 | 中文国产视频 | 青青草免费在线视频 | 人人看人人澡 | 在线精品视频一区 | 欧美精品黑人猛交高潮 | 日韩欧美国产电影 | 欧洲精品一区二区 | 黄色网战入口 | 中文字幕乱码人妻一区二区三区 | 精品肉丝脚一区二区三区 | 狠狠干夜夜骑 | 影音先锋在线观看视频 | 香蕉视频国产 | 秘密基地电影免费版观看国语 | 久久成人小视频 | 欧洲丰满少妇做爰 | 美女久久 | 日本不卡不卡 | 黑人巨大精品欧美一区免费视频 | 一区二区三区免费观看 | 国产色无码精品视频 | 亚洲欧洲在线观看 | 黄色片特级 | 国产1区二区 | av色图在线 | www.五月激情 | 欧洲中文字幕日韩精品成人 | 精品国产一二三 | 中文字幕日韩高清 | 国产精品作爱 | 新天堂网 | 337p粉嫩大胆色噜噜狠狠图片 | 免费观看国产精品视频 | 一级黄色片免费播放 | 成年人在线视频免费观看 | 9i看片成人免费看片 | 久久久成人免费视频 | 69热在线| 欧美日韩在线视频一区二区 | 在线看b | 国产精品天天看 | 国内视频精品 | 天堂а√在线中文在线新版 | www.国产欧美 | 欧美在线视频精品 | www.97av| 国产草草草| 殴美黄色大片 | 成人a视频在线观看 | 在线射 | 精品爆乳一区二区三区 | 销魂美女一区二区 | 成人一区二区三区 | 精品免费一区二区三区 | 拔萝卜91 | 日本人妻丰满熟妇久久久久久 | 国产亚洲午夜 | 久久久久久久9999 | 四虎影库在线播放 | 欧美三级韩国三级日本三斤 | 国产日韩成人 | 精品久久久久一区二区 | 成人免费看片98 | 我爱avav色aⅴ爱avav | 一级全黄毛片 | 69xx欧美| www婷婷av久久久影片 | 在线观看免费大片 | 欧美视频自拍偷拍 | 亚洲一区二区美女 | 又黄又爽又色的视频 | 国产精品久久久久久久久久东京 | 操操操操网 | 免费看欧美黑人毛片 | 亚洲毛片精品 | 亚洲天堂av片 | 色综合中文综合网 | 一级免费视频 | 青青久久av| 91免费黄色| 最新在线黄色网址 | 国产精品久久久久久久免费大片 | 欧美日韩123 | 五月天视频网站 | 在线观看黄色国产 | 日本黄色aaa | 亚洲伊人久久综合 | 韩国一区在线 | 饥渴少妇伦色诱公 |