• 大小: 2.41MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-13
  • 语言: C/C++
  • 标签: 鱼眼  

资源简介

该算法能标定鱼眼畸变图像的原点和半径,利用球面坐标定位法校正畸变图像,使用双线性插值法填充校正后图像,本程序在vc6下实现鱼眼摄像头畸变图像校正,调试前必须安装OpenCV和vc6

资源截图

代码片段和文件信息




#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( “11.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 << x0 << endl << y0 << endl <<  r << endl;


IplImage* imgCalib = cvCreateImage( cvGetSize( imgTemp ) IPL_DEPTH_8U 3);

for( int j = 0; j < imgCalib->height; j++)
for( int i = 0; i < imgCalib->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

     文件      51524  2009-04-22 17:17  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\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

     文件       4416  2009-07-30 16:24  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\CalibCentre.vcproj

     文件       1427  2009-05-21 13:39  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\CalibCentre.vcproj.6CA8DB2F46314F9.Administrator.user

     文件       1427  2009-07-30 17:49  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\CalibCentre.vcproj.VTRONCORP.lxwei.user

     文件       1427  2009-06-12 18:02  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\CalibCentre.vcproj.WWW-AF70301D37B.Administrator.user

     文件      12462  2009-07-30 17:08  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\Debug\BuildLog.htm

     文件        663  2009-07-30 16:32  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\Debug\CalibCentre.exe.embed.manifest

     文件        728  2009-07-30 16:32  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\Debug\CalibCentre.exe.embed.manifest.res

     文件        621  2009-07-30 17:08  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\Debug\CalibCentre.exe.intermediate.manifest

     文件      64385  2009-07-30 17:08  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\Debug\FishEye.obj

     文件         69  2009-07-30 17:08  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\Debug\mt.dep

     文件      36631  2009-07-30 16:32  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\Debug\ScanningMethod.obj

     文件     617472  2009-07-30 17:08  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\Debug\vc90.idb

     文件     290816  2009-07-30 17:08  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\Debug\vc90.pdb

     文件       3041  2009-07-30 17:08  球面坐标定位法校正鱼眼图像畸变\球面坐标定位\CalibCentre\FishEye.cpp

............此处省略28个文件信息

评论

共有 条评论