资源简介
利用双经度法对鱼眼相机拍摄的图片进行畸变矫正,在双经度法的基础上,使用扫描线法确定了鱼眼相片的半径和原先,并使椭圆变成了一个圆
代码片段和文件信息
#include
#include
#include “ScanningMethod.h“
using namespace std;
using namespace cv;
#define Q_R 311
#define X0 392
#define Y0 282
#define PI 3.1415926
IplImage* Double(IplImage* img)
{
float R = Q_R;
IplImage* imgCalib = cvCreateImage(cvSize(2 * R 2 * R) IPL_DEPTH_8U 3);//创建校正后图像大小
float sita = 0;
float fi = 0;
float tempu = 0;
float tempv = 0;
float x0;//扩展边界后圆心发生偏移
float y0;
float r;
IplImage* imgCircle =ScanningMethod(img &x0 &y0 &r); //IplImage* imgCircle
float flag1 = 1;
float flag2 = 1;
CvPoint2D32f xy;
CvPoint2D32f uv;
for (int i = 0; i < imgCalib->width; i++)
{
for (int j = 0; j < imgCalib->height; j++)
{
sita = PI - (PI / 2 / R)*i;
fi = PI - (PI / 2 / R)*j;
tempu = tan(fi)*tan(fi) + 1 + (tan(fi)*tan(fi)) / (tan(sita)*tan(sita));
tempv = tan(sita)*tan(sita) + 1 + (tan(sita)*tan(sita)) / (tan(fi)*tan(fi));
if (fi >PI / 2) //文中公式22,23 ,17,18有符号错误
flag1 = 1;
else
flag1 = -1;
if (sita flag2 = 1;
else
flag2 = -1;
uv.x = flag1*R / sqrt(tempu) + x0;//u-fi 下正上负
uv.y = flag2*R / sqrt(tempv) + y0;//v-sita 右正左负
int iu = (int)uv.x;
int iv = (int)uv.y;
//!此处取的是左上点,为了双线性方便
CvPoint3D32f f1;
CvPoint3D32f f2;
if (iu >= 0 && iv >= 0 && iuwidth&&ivheight)
{
//双线性插值法
f1.x = ((uchar*)(imgCircle->imageData + imgCircle->widthStep*iv))[iu * 3] * (1 - abs(uv.x - iu)) +
((uchar*)(imgCircle->imageData + imgCircle->widthStep*iv))[(iu + 1) * 3] * (1 - abs(uv.x - (iu + 1)));
f1.y = ((uchar*)(imgCircle->imageData + imgCircle->widthStep*iv))[iu * 3 + 1] * (1 - abs(uv.x - iu)) +
((uchar*)(imgCircle->imageData + imgCircle->widthStep*iv))[(iu + 1) * 3 + 1] * (1 - abs(uv.x - (iu + 1)));
f1.z = ((uchar*)(imgCircle->imageData + imgCircle->widthStep*iv))[iu * 3 + 2] * (1 - abs(uv.x - iu)) +
((uchar*)(imgCircle->imageData + imgCircle->widthStep*iv))[(iu + 1) * 3 + 2] * (1 - abs(uv.x - (iu + 1)));
f2.x = ((uchar*)(imgCircle->imageData + imgCircle->widthStep*(iv + 1)))[iu * 3] * (1 - abs(uv.x - iu)) +
((uchar*)(imgCircle->imageData + imgCircle->widthStep*(iv + 1)))[(iu + 1) * 3] * (1 - abs(uv.x - (iu + 1)));
f2.y = ((uchar*)(imgCircle->imageData + imgCircle->widthStep*(iv + 1)))[iu * 3 + 1] * (1 - abs(uv.x - iu)) +
((uchar*)(imgCircle->imageData + imgCircle->widthStep*(iv + 1)))[(iu + 1) * 3 + 1] * (1 - abs(uv.x - (iu + 1)));
f2.z = ((uchar*)(imgCircle->imageData + imgCircle->widthStep*(iv + 1)))[iu * 3 + 2] * (1 - abs(uv.x - iu)) +
((uchar*)(imgCircle->imageData + imgCircle->widthStep*(iv + 1)))[(iu + 1) * 3 + 2] * (1 - abs(uv.x - (iu + 1)));
((uchar*)(imgCalib->imageData + imgCalib->widthStep*j))[i * 3] = f1.x*(1 - abs(uv.y - iv)) + f2.x*(abs(uv.y - iv));
((uchar*)(imgCalib->imageData + imgCalib->widthStep*j))[i * 3 + 1] = f1.y*(1 - abs(uv.y - iv)) + f2.y*(abs(uv.y - i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-09-04 11:46 继续改进双精度法_将椭圆改为圆\
目录 0 2017-08-30 14:49 继续改进双精度法_将椭圆改为圆\.vs\
目录 0 2017-08-30 14:49 继续改进双精度法_将椭圆改为圆\.vs\继续改进双精度法_将椭圆改为圆\
目录 0 2017-08-30 14:49 继续改进双精度法_将椭圆改为圆\.vs\继续改进双精度法_将椭圆改为圆\v14\
文件 32256 2017-09-04 11:46 继续改进双精度法_将椭圆改为圆\.vs\继续改进双精度法_将椭圆改为圆\v14\.suo
目录 0 2017-08-30 14:50 继续改进双精度法_将椭圆改为圆\x64\
目录 0 2017-08-30 14:50 继续改进双精度法_将椭圆改为圆\x64\Debug\
文件 126464 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\x64\Debug\继续改进双精度法_将椭圆改为圆.exe
文件 1429948 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\x64\Debug\继续改进双精度法_将椭圆改为圆.ilk
文件 2928640 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\x64\Debug\继续改进双精度法_将椭圆改为圆.pdb
目录 0 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\
文件 2323884 2017-08-23 13:38 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\1.jpg
文件 2904040 2017-09-01 14:10 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\123.jpg
文件 107640 2017-08-23 16:16 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\3.jpg
文件 576463 2017-08-14 19:17 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\4.jpg
文件 940573 2017-09-01 14:13 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\5.jpg
文件 5205 2017-08-30 14:54 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\ScanningMethod.cpp
文件 683 2017-09-02 10:09 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\ScanningMethod.h
文件 3735 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\main.cpp
文件 81922 2017-09-04 11:28 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\result111s.jpg
文件 9374 2017-08-30 10:29 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\test.jpg
目录 0 2017-08-30 14:50 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\
目录 0 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\Debug\
文件 70213 2017-09-02 10:19 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\Debug\ScanningMethod.obj
文件 388719 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\Debug\main.obj
文件 1223680 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\Debug\vc140.idb
文件 2183168 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\Debug\vc140.pdb
文件 2565 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\Debug\继续改进双精度法_将椭圆改为圆.log
目录 0 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\Debug\继续改进双精度法_将椭圆改为圆.tlog\
文件 1298 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\Debug\继续改进双精度法_将椭圆改为圆.tlog\CL.command.1.tlog
文件 42126 2017-09-04 11:27 继续改进双精度法_将椭圆改为圆\继续改进双精度法_将椭圆改为圆\x64\Debug\继续改进双精度法_将椭圆改为圆.tlog\CL.read.1.tlog
............此处省略9个文件信息
- 上一篇:AForge离线文档
- 下一篇:Web网上购物系统
评论
共有 条评论