|
楼主 |
发表于 2014-8-3 14:33:34
|
显示全部楼层
本帖最后由 梧桐树狮子 于 2014-8-3 15:27 编辑 7 u: M2 v( b+ q& Q; O8 E
% M$ ^& S$ Z# `; z9 ]0 l6 V! `
8 ]2 R2 D, P, P: Z这可能是最简单的一个3D扫描设置,如果你有opencv和openGL基础,实现这个并不难。图是我用鼠标画的,很恶。。大致能看明白就是了。
; f x% `) f' f) D+ Z2 C) O7 z1 y+ `, V i1 g+ R
红框内的部分是一个线性激光器,它投出来的耀斑,打在墙上形成一条细线就是了。淘宝上有卖的,一般几十块到百十块不等。在这个图里,红色的激光器投出一条竖线,竖线投在一个罐子上.形成一条红色的亮线.这个罐子就是我们要扫描的对象.
/ j! Q" w, B8 u6 X3 {7 ]3 Y
8 J+ Q8 k8 T1 t C5 ?/ t5 h绿框所指的盘子底座,是一个可旋转的底坐,要扫描的罐子就放在上面.
: P O V6 W# \7 W' `
+ h2 ]! G0 j+ o) p" u; D d蓝色的是一相机.8 \% i6 c( N; }' _" Q
3 o+ J) e8 a" } v* b, _把相机放在轴线C上,线性激光器放在轴向L上,让被扫描的物体绕R轴旋转.并保证这三条轴线两两垂直.现在可以开始扫描了.4 ]! l8 C- D. E+ _) d1 s" V/ \0 t
9 X$ d/ \: f0 z
把相机设置为曝光度较低,或者最好干脆在一个全黑环境中来拍,拍的结果最好是除了投在罐子上亮线之外什么都是黑的.' J4 D( e2 `/ u! N2 [9 q. l* W# g
旋转底座每转一度拍一张,最终拍了360张,你就得到了360个罐子的半剖面线.(实际可能360张不够,)
6 @4 N- u* s) a0 E5 d通过opencv识别每一条半剖面线,
+ V) w k' P$ s# t) J然后在将这些曲线通过loft生成曲面。原理就像下面这个,如果用过maya,这个图应该很眼熟。
5 m F) ~# `( q+ \5 J% Z) A( t* A" u- K% u# M k: Y
、
2 G4 O6 l) j2 d6 ?7 E( v6 ~$ L& A7 Y
- Z; E4 |* [3 [% d2 v只要旋转台转的够匀速,拍的够清楚,这个理论上就能实现3D扫描了。。
, t+ P7 {5 j8 ~- |事实上。。。。。。。$ R2 {3 ] h: {4 ]$ ]9 H0 {, V* C
. O+ c ?5 \5 a* O
终结者2里面那个T2000液体金属人的模型,就是这样的原理扫描的演员,有兴趣的可以找找终结者2的制作花絮看看,本想截个图来的,但这会儿公司把视频网站全掐了。。。6 k) n7 G9 f0 v, O
/ _8 \0 E3 X; ]5 S; a2 H
找了一个差不多的图,大家看看:. A5 g6 I# ?0 t0 b" C& F+ t
这个大家可能说摄像头和激光器之间的夹角不是垂直的啊,嗯,其实拍下来在软件里校正成垂直的就完事了。。。。又是三角函数的题目。。。。。。。只要摄像头和激光不在一条直线上,就问题不大。( o, R! `5 ?, f+ S
6 y/ H# H G: Z$ E) q8 N* N. t. V/ d0 ]% M
另一个比较山寨的同类算法产品。2 V) I9 o/ O5 C# W2 y+ ~# e4 ?
! ]* r* L- f+ _2 S2 K
|
|