线结构光法测量物体体积:轮廓法三维重建

        这是博主两年前参加某比赛的作品,由于近期坑爹的激光课程要写结课论文,博主现在的研究跟光一毛钱关系都木有,于是就把这玩意整理成结课论文了,顺便把整理的内容节选一部分放在博客上,以供参见。

        结构光法做三维重建是一个古老的话题,博主当时选择了线结构光法,ok,不多说,上作品图。

图片1

        被测物放在转台上转一圈,一字激光器打在物体上,相机采集图像传给PC机,PC机通过激光器打在物体上的线斑提取出物体轮廓,结合相机标定的结果得到物体真实的轮廓,这样就完成了三维重建,最后算出体积就可以了。

        当时做了一个演示原理的flash:

        原理就是这样,那也就没什么了,再说说当时的相机标定是怎么做的吧。在Matlab中有一个工具箱,可以选择变换点对,然后Matlab会生成一个矩阵,这个矩阵的参数带入到一个公式中,对每个点都做这样的变换就可以将相机拍摄图像的像素点映射到实际的位置了。

A=imread('1.jpg');
B=imread('00.jpg');
A=rgb2gray(A);
B=rgb2gray(B);
figure;subplot(1,2,1);imshow(A);subplot(1,2,2);imshow(B);
%cpselect(A,B);
tform=cp2tform(Ap,Bp,'Projective');
I=imtransform(A,tform);
figure;imshow(I);

e

f

        做标定的时候要线光过转台中心,标定板与线光在同一平面,就像这样:

20140721_150403

        就是仿射变换的原理了,这里在实际应用的时候注意,得到内参数矩阵就是matlab生成的结构体里的,有九个参数,但是Matlab没有给出变换公式,博主把公式推出来了:

h

        OK,See You Next Chapter!

发表评论