智能车制作
标题:
参加完比赛的你,是否还愿意继续研究技术?
[打印本页]
作者:
sonwendi
时间:
2011-8-26 18:02
标题:
参加完比赛的你,是否还愿意继续研究技术?
本帖最后由 sonwendi 于 2011-8-26 18:07 编辑
比完了,轻松了一下,感觉有失有得,自己也打了不少的酱油,好多新想法新技术都闷在肚子里,现在挺后悔没有早点尝试。
准备开学了继续做一做没有做完的工作,再钻研一下,没有了比赛,做做技术也是很快乐的
祝大家在能够享受到工作的快乐
另外,大家用的摄像头估计多多少少有点失真,斜着放会有梯形失真,用广角会有桶形失真,下面是解决桶形失真的一段matlab算法和C++代码,可以解决失真问题,但是会把图像拉小,可以在此基础上改进一下移植单片机也可以。仅供参考:
matlab代码:
%% 镜头桶形失真校正(短焦镜头)
img_origin1 = imread('cap56.bmp');
img_origin = rgb2gray(img_origin1);
k1 = -0.00000037; % 形变参数,根据实际情况调整
k2 = -0.00000037;
img_size = size( img_origin );
img_undist = zeros( img_size );
img_undist = uint8( img_undist );
for l1 = 1:img_size(1) % 垂直方向
y = l1 - img_size(1)/2;
for l2 = 1:img_size(2) % 水平方向
x = l2 - img_size(2)/2;
x1 = round( x * ( 1 + k1 * x * x + k2 * y * y ) );
y1 = round( y * ( 1 + k1 * x * x + k2 * y * y ) );
y1 = y1 + img_size(1)/2;
x1 = x1 + img_size(2)/2;
img_undist(l1,l2) = img_origin(y1, x1);
end
end
figure(1);
subplot(121); imshow(img_origin);
subplot(122); imshow(img_undist);
复制代码
C++代码:
// 镜头校正查找表
CvPoint CorrInd[480][640];
// 镜头径向畸变校正初始化
void LensCorrectInit( double k1 = -0.00000035, double k2 = -0.00000035 );
// 镜头径向畸变校正初始化
void LensCorrectInit( double k1, double k2 )
{
int imgWidth = camera.GetWidth(); // 获得摄像头图像尺寸
int imgHeight = camera.GetHeight();
int imgWd2 = imgWidth>>1;
int imgHd2 = imgHeight>>1;
int it;
int jt;
int it2;
int jt2;
for( int i=0; i<imgHeight; i++ )
{
it = ( i + 1 ) - imgHd2; // (i+1) 是其真正的图像坐标
for( int j=0; j<imgWidth; j++ )
{
double temp;
jt = ( j + 1 ) - imgWd2; // (j+1) 是其真正的图像坐标
temp = 1 + k1*it*it + k2*jt*jt;
it2 = (int)(temp * it);
jt2 = (int)(temp * jt);
it2 = it2 + imgHd2 + 1;
jt2 = jt2 + imgWd2 + 1;
CorrInd[i][j].x = jt2;
CorrInd[i][j].y = it2;
}
}
}
// 镜头径向畸变校正
void LensCorrect( IplImage* src, IplImage* dst )
{
int imgWidth = dst->width;
int imgHeight = dst->height;
int it2;
int jt2;
for( int i=0; i<imgHeight; i++ )
{
uchar *pdstdata = (uchar*)(dst->imageData) + i*dst->widthStep;
for( int j=0; j<imgWidth; j++ )
{
it2 = CorrInd[i][j].y;
jt2 = CorrInd[i][j].x;
uchar * psrcdata = cvPtr2D( src, it2, jt2 );
*(pdstdata++) = *(psrcdata++);
*(pdstdata++) = *(psrcdata++);
*(pdstdata++) = *(psrcdata++);
}
}
}
复制代码
作者:
Eamonn
时间:
2011-8-26 18:27
好东西 顶一个
作者:
翔宇
时间:
2011-8-26 19:05
谢谢分享!
作者:
aytc100
时间:
2011-8-26 20:18
肯定得继续啊
作者:
sonwendi
时间:
2011-8-26 21:21
回复
4#
aytc100
总是感觉讨论技术的不多
挺喜欢上ourdev网站,觉得那里到处都是探讨技术
作者:
aytc100
时间:
2011-8-26 23:24
回复
5#
sonwendi
这里讨要技术的倒是不少……供需严重不平衡
作者:
skyseeing
时间:
2011-9-1 16:43
回复
5#
sonwendi
已经上了3年了。。。。
作者:
turf456
时间:
2011-9-1 17:15
我上our_dev喜欢看一个疯子到处吹牛逼。
作者:
sonwendi
时间:
2011-9-28 20:32
木有人对摄像头标定感兴趣么?你们都是怎么解决广角镜头的?
作者:
征服者
时间:
2011-10-30 13:13
好东西啊
作者:
zy317409314
时间:
2011-12-13 11:41
今年检测 在两边了呀,新手遇摄像头容易丢线问题,用广角就得处理楼主提到的矫正算法了。。。楼主还有没有什么好的建议解决拐弯丢线的问题啊。。。
作者:
sonwendi
时间:
2011-12-14 23:36
回复
11#
zy317409314
还没有研究到这个地步……
作者:
xiayayun
时间:
2011-12-15 12:44
参考一下,以后要学的东西多着呢
作者:
weichuiweicao
时间:
2012-6-26 18:42
唉!!!不懂啊
作者:
农民工
时间:
2012-6-27 23:43
很喜欢
作者:
bluered
时间:
2013-3-17 08:06
多谢大神。昨晚刚提完速,这几天去试试矫正。
作者:
lixuanya
时间:
2013-7-11 21:01
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2