注册会员
- 积分
- 191
- 威望
- 89
- 贡献
- 74
- 兑换币
- 45
- 注册时间
- 2016-7-20
- 在线时间
- 14 小时
- 毕业学校
- 陇东学院
|
求各位给个方向,摄像头标定一直不合适,故小弟利用朱葛俊大哥的数据,用MATLAB跑了一会儿数据,想找个合适的,发现还是不行。求各位支个招(小弟不才,只跑其中一部分数据,大概是188187组)
下面是原图
下面是跑的数据的图片
其中几张
万分感谢,这个是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()
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|