智能车制作
标题:
求救:摄像头标定方法
[打印本页]
作者:
1260111947
时间:
2018-3-15 22:06
标题:
求救:摄像头标定方法
求各位给个方向,摄像头标定一直不合适,故小弟利用朱葛俊大哥的数据,用MATLAB跑了一会儿数据,想找个合适的,发现还是不行。求各位支个招(小弟不才,只跑其中一部分数据,大概是188187组)
下面是原图[attach]92246[/attach]
下面是跑的数据的图片
[attach]92247[/attach]
其中几张
[attach]92255[/attach]
[attach]92254[/attach]
[attach]92250[/attach]
[attach]92251[/attach]
[attach]92252[/attach]
[attach]92253[/attach]
万分感谢,这个是MATLAB程序
disp('start');
clear,clc;
[X,map]=imread('E:\1smart Car\BimabeProgess\img4.bmp'); %读取图像文件
%img_origin = rgb2gray(I); %将真彩色图像转换为灰度图像二维矩阵 ?C:\Users\duxingzhe2016\Desktop\2.bmp
% BW=im2bw(X,map,0.1);
X2=im2uint8(X,'indexed');
img_origin=ind2gray(X2,map);
%imshow(X,map);
img_size = size(img_origin); % 返回矩阵的行数或列数 其中r=size(A,1)该语句返回矩阵A的行数row为垂直方向
subplot(1,2,1);imshow(img_origin);title('原图,60*80');
m1 =[0.208748 0.201252 0.197369 0.204188 0.208997 0.197502 0.208333 0.211618 0.210896 0.219466 0.208334 0.205882 0.197133 0.199867 0.203863 0.196078 0.211268 0.21544 0.214521]
m2 =[ -0.28492 -0.330947 -0.346889 -0.319372 -0.322453 -0.28698 -0.347223 -0.342706 -0.368956 -0.353542 -0.359477 -0.388292 -0.339773 -0.321889 -0.372046 -0.352113 -0.314186 -0.313531]
m3 =[ 4.49617 7.18246 7.02152 5.69634 7.00238 6.60703 6.66668 6.15114 6.85113 7.229797 8.11765 8.04659 7.80144 6.65236 7.45099 5.98592 4.9641 6.10561]
m4 = [1.49012e-08 -1.49012e-08 8.9407e-08 -2.98023e-8 0 5.96046e-08 2.98023e-08 -1.49012e-08 0 4.47035e-08 9.9407e-08 2.98023e-08 -2.98023e-08 5.96046e-08 -4.47035e-08 -1.49012e-08 -1.04308e-07 1.49012e-8]
m5 = [0.548993 0.299642 0.460528 0.418847 0.286626 0.259964 0.3373 0.303164 0.470739 0.34091 0.48366 0.382318 0.499667 0.515022 0.351936 0.598591 0.399462 0.41254]
m6 = [-8.01251 3.98927 -2.43424 2.30367 8.32802 9.61512 4.28573 8.20738 0.839639 9.5202 -1.29413 0.860222 -3.43105 -7.38198 3.52942 -9.96478 8.4246 -6.23711 2.37625]
m7 = [-5.82077e-10 4.07454e-10 4.42378e-09 -1.5134e-9 5.82077e-11 7.85803e-10 -1.86265e-09 -1.01863e-09 2.32831e-09 2.46291e-09 5.82077e-10 5.82077e-10 -5.82077e-10 2.32831e-10 -2.79397e-09 1.16415e-09 -5.19503e-09 1.28057e-9]
m8 = [-0.0118138 -0.0129696 -0.0131579 -0.013089 -0.0131369 -0.0124914 -0.0138889 -0.0144991 -0.0139949 -0.0138889 -0.0143791 -0.0155317 -0.0139907 -0.0128755 -0.0145802 -0.0140845 -0.0125673 -0.0132013]
u=80; % 水平方向colum
v=0; % 行row为垂直方向
%subplot(4,4,1);imshow(img_origin);title('原图,60*80');
%%以下是数据批量处理-----------------------------------------------------------------------------
g=0;
disp('start')
for d1=1:length(m1)
for d2=1:length(m2)
for d3=1:length(m3)
for d4=1:length(m4)
for d5=1:length(m5)
for d6=1:length(m6)
for d7=1:length(m7)
for d8=1:length(m8)
x=(m1(d1)*u+m2(d2)*v+m3(d3))/(m7(d7)*u+m8(d8)*v+1);% 水平方向column
y=(m4(d4)*u+m5(d5)*v+m6(d6))/(m7(d7)*u+m8(d8)*v+1); % 行row为垂直方向
x=uint16(x);
y=uint16(y); %本段为生成新矩阵容纳校正后的图像
img_undist = zeros(y ,x ); % zeros(m,n)产生m×n的全0矩阵 所有元素初始化为0
new_size = size(img_undist); % 返回m×n全0矩阵的行数或列数
img_undist = uint8( img_undist );
for i = 1:(img_size(1)) % 行row为垂直方向
for j = 1:(img_size(2)) % 水平方向column
u=j; % 水平方向column
v=i; % 垂直方向
x=(m1(d1)*u+m2(d1)*v+m3(d1))/(m7(d1)*u+m8(d1)*v+1); % 水平方向column
y=(m4(d1)*u+m5(d1)*v+m6(d1))/(m7(d1)*u+m8(d1)*v+1);% 行row为垂直方向
x=int16(x)+new_size(2)/2; %物理坐标用负,现修正显示
y=int16(y);
if(y>0 &&x>0 )
img_undist(y,x)= img_origin(i,j); %对应坐标
end
end
end
imgName = d1;
int16 imddir=0;
imddir=d1+1;
img_undist=flipud(img_undist); %矩阵以水平轴翻转
adressString = ['E:\1smart Car\BimabeProgess\test\' sprintf('%0.4d',g) '.bmp']; %这里num是该图像所在的
imwrite(img_undist, adressString); %adressString表示输出地址
g=g+1;
disp(g);
end
end
end
end
end
end
end
end
%length()
复制代码
作者:
1260111947
时间:
2018-3-15 22:07
@Quixote
作者:
Quixote
时间:
2018-4-12 22:19
大佬你谁?
作者:
wx_HirsiIms
时间:
2018-4-14 00:22
@Quixote
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2