資源簡介
球面坐標定位法校正魚眼圖像畸變.rar

代碼片段和文件信息
//球面坐標定位法校正魚眼圖像畸變
//作者:田糧?????????????????合肥工業大學
#include?“ScanningMethod.h“
#include“cv.h“
#include“cxcore.h“
#include“highgui.h“
#include
using?namespace?std;
//根據校正圖像?U坐標?計算魚眼圖像的X坐標
float?CalculateFisheye_x(?int?u?int?v?float?x0?float?y0?float?r);
float?Calculate_dx(?int?v?float?y0?float?r);
int?main(?int?argc?char**?argv?)
{
IplImage*?pImg;
if(?(?pImg?=?cvLoadImage(?“10.jpg“?CV_LOAD_IMAGE_ANYCOLOR?)?)?==?0)
return?0;
float?x0;
float?y0;
float?r;
IplImage*?imgTemp?=?ScaningMethod(?pImg?&x0?&y0?&r);
if(?imgTemp?==?0?)
{
cout?<“標定魚眼圖像中心失敗“?< return?0;
}
cout?<
IplImage*?imgCalib?=?cvCreateImage(?cvGetSize(?imgTemp?)?IPL_DEPTH_8U?3);
for(?int?j?=?0;?j?height;?j++)
for(?int?i?=?0;?i?width;?i++)
{
float?x?=?CalculateFisheye_x(?i?j?imgTemp->width/2?imgTemp->height/2?r?);
int?ix?=?(int)x;
int?dx?=?Calculate_dx(?j?imgTemp->height/2?r?);
/*?if(?abs(x?-?(int)x0)?>?dx+50?) //?有錯,可以不要,該段的功能為:
?{ //當計算得到的x值超出魚眼圖像的有效區域時,
//x對應的校正后的圖像像素點值設為0
((uchar*)(imgCalib->imageData?+?imgCalib->widthStep*j))[i*3]?=?0;
((uchar*)(imgCalib->imageData?+?imgCalib->widthStep*j))[i*3?+?1]?=?0;
((uchar*)(imgCalib->imageData?+?imgCalib->widthStep*j))[i*3?+?2]?=?0;
?}
?else*/
?{
//???計算出魚眼圖像的(x,y)坐標后,使用雙線性插值法填充校正后圖像
?((uchar*)(imgCalib->imageData?+?imgCalib->widthStep*j))[i*3]?=
((uchar*)(imgTemp->imageData?+?imgTemp->widthStep*j))[ix*3]?*?(1-abs(x-ix))+
((uchar*)(imgTemp->imageData?+?imgTemp->widthStep*j))[(ix+1)*3]?*?(1-abs(x-(ix+1)));
((uchar*)(imgCalib->imageData?+?imgCalib->widthStep*j))[i*3+1]?=
((uchar*)(imgTemp->imageData?+?imgTemp->widthStep*j))[ix*3+1]?*?(1-abs(x-ix))+
((uchar*)(imgTemp->imageData?+?imgTemp->widthStep*j))[(ix+1)*3+1]?*?(1-abs(x-(ix+1)));
((uchar*)(imgCalib->imageData?+?imgCalib->widthStep*j))[i*3+2]?=
((uchar*)(imgTemp->imageData?+?imgTemp->widthStep*j))[ix*3+2]?*?(1-abs(x-ix))+
((uchar*)(imgTemp->imageData?+?imgTemp->widthStep*j))[(ix+1)*3+2]?*?(1-abs(x-(ix+1))); ?
?}
}
cvNamedWindow(?“原圖????作者:田糧“?1?);//創建窗口
cvNamedWindow(?“校正圖????作者:田糧“?1?);
cvShowImage(?“原圖????作者:田糧“?imgTemp?);
cvSaveImage(“標準圓.jpg“?imgTemp);
????cvShowImage(?“校正圖????作者:田糧“?imgCalib?);//顯示圖像
????cvWaitKey(0);?//等待按鍵
????cvDestroyWindow(?“原圖????作者:田糧“?);//銷毀窗口
????cvReleaseImage(?&imgTemp?);?//釋放圖像
cvReleaseImage(?&imgCalib?);
cvReleaseImage(?&pImg?);
return?0;
}
float?CalculateFisheye_x(?int?u?int?v?float?x0?float?y0?float?r)
{
float?xh?=?u?-?x0;?
float?yi?=?y0?-?v;
float?dx?=?sqrt(?r*r?-?yi*yi?);
int?xk?=?(?x0?+?xh?*?dx?/?r);
return?xk;
}
float?Calculate_dx(?int?v?float?y0?float?r?)
{
float?yi?=?y0?-?v;
int?dx?=?sqrt(?r*r?-?yi*yi);
return?dx;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????62115??2009-05-23?21:42??球面坐標定位\CalibCentre\1.jpg
?????文件??????58723??2009-05-30?15:31??球面坐標定位\CalibCentre\10.jpg
?????文件??????56124??2009-05-30?13:50??球面坐標定位\CalibCentre\11.jpg
?????文件?????140630??2009-05-23?21:55??球面坐標定位\CalibCentre\12.jpg
?????文件??????49748??2009-05-23?21:59??球面坐標定位\CalibCentre\13.jpg
?????文件???????5070??2009-05-23?21:59??球面坐標定位\CalibCentre\14.jpg
?????文件??????73994??2009-05-24?23:36??球面坐標定位\CalibCentre\15.jpg
?????文件?????477582??2009-06-01?22:54??球面坐標定位\CalibCentre\19.bmp
?????文件??????19070??2009-05-23?21:41??球面坐標定位\CalibCentre\2.jpg
?????文件?????138968??2009-05-14?18:29??球面坐標定位\CalibCentre\3.jpg
?????文件???????4659??2009-05-23?21:37??球面坐標定位\CalibCentre\4.jpg
?????文件??????41425??2009-05-23?21:50??球面坐標定位\CalibCentre\5.jpg
?????文件??????44731??2009-05-23?21:50??球面坐標定位\CalibCentre\6.jpg
?????文件??????34862??2009-05-23?21:49??球面坐標定位\CalibCentre\7.jpg
?????文件?????103266??2009-05-23?21:49??球面坐標定位\CalibCentre\8.jpg
?????文件??????67369??2009-05-24?00:29??球面坐標定位\CalibCentre\9.jpg
?????文件???????4142??2009-05-25?00:43??球面坐標定位\CalibCentre\CalibCentre.vcproj
?????文件???????1427??2009-05-21?13:39??球面坐標定位\CalibCentre\CalibCentre.vcproj.6CA8DB2F46314F9.Administrator.user
?????文件???????1427??2009-06-12?18:02??球面坐標定位\CalibCentre\CalibCentre.vcproj.WWW-AF70301D37B.Administrator.user
?????文件??????10618??2009-06-07?16:52??球面坐標定位\CalibCentre\Debug\BuildLog.htm
?????文件????????663??2009-05-16?15:48??球面坐標定位\CalibCentre\Debug\CalibCentre.exe.em
?????文件????????728??2009-05-16?15:48??球面坐標定位\CalibCentre\Debug\CalibCentre.exe.em
?????文件????????621??2009-06-07?16:52??球面坐標定位\CalibCentre\Debug\CalibCentre.exe.intermediate.manifest
?????文件??????65932??2009-06-07?16:52??球面坐標定位\CalibCentre\Debug\FishEye.obj
?????文件?????????67??2009-06-07?16:52??球面坐標定位\CalibCentre\Debug\mt.dep
?????文件??????36883??2009-06-07?16:52??球面坐標定位\CalibCentre\Debug\ScanningMethod.obj
?????文件?????290816??2009-06-07?16:52??球面坐標定位\CalibCentre\Debug\vc90.pdb
?????文件???????3166??2009-06-10?13:23??球面坐標定位\CalibCentre\FishEye.cpp
?????文件??????10408??2009-06-07?16:54??球面坐標定位\CalibCentre\Release\BuildLog.htm
?????文件?????732388??2009-06-07?16:54??球面坐標定位\CalibCentre\Release\FishEye.obj
............此處省略30個文件信息
- 上一篇:ssdt內核hook的源代碼
- 下一篇:libX11-1.5.0.tar.bz2
評論
共有 條評論