资源简介
球面坐标定位法校正鱼眼图像畸变.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 << 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
文件 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
评论
共有 条评论