|  | 
 
 楼主|
发表于 2014-8-3 14:33:34
|
显示全部楼层 
| 本帖最后由 梧桐树狮子 于 2014-8-3 15:27 编辑 ) S8 z2 h. t# |1 D; B) j! [$ p 
 $ q0 \% m5 z. m: N: M1 I+ x5 ~! Q3 i
  7 D; {. O4 r  \" x2 J 这可能是最简单的一个3D扫描设置,如果你有opencv和openGL基础,实现这个并不难。图是我用鼠标画的,很恶。。大致能看明白就是了。
 # D$ _+ b5 Q1 S5 J+ `: L
 4 [( {; ]( F4 N) |* Z红框内的部分是一个线性激光器,它投出来的耀斑,打在墙上形成一条细线就是了。淘宝上有卖的,一般几十块到百十块不等。在这个图里,红色的激光器投出一条竖线,竖线投在一个罐子上.形成一条红色的亮线.这个罐子就是我们要扫描的对象.
 6 @  B8 [: `& P( S( w" r' e4 n
 Y8 i& ?3 G, p! p* [% @绿框所指的盘子底座,是一个可旋转的底坐,要扫描的罐子就放在上面.7 |- X# s; k6 ?. x' @+ w
 
 5 B# Q0 O  L0 M蓝色的是一相机.; k- P3 k& p7 K9 J& w8 N3 o( i
 
 Y. i4 K" X! A2 \把相机放在轴线C上,线性激光器放在轴向L上,让被扫描的物体绕R轴旋转.并保证这三条轴线两两垂直.现在可以开始扫描了.
 ! K4 w1 @* t, J" r' Q) B" z% c$ f; H& [9 v  c0 c+ v2 i! f
 把相机设置为曝光度较低,或者最好干脆在一个全黑环境中来拍,拍的结果最好是除了投在罐子上亮线之外什么都是黑的.
 6 c! D2 {. {% x, e/ s0 O- K旋转底座每转一度拍一张,最终拍了360张,你就得到了360个罐子的半剖面线.(实际可能360张不够,)
 1 W8 {, a8 [  V7 v9 E2 b  P通过opencv识别每一条半剖面线,  y9 E) J7 T9 @. G3 H$ F# R( V8 d
 然后在将这些曲线通过loft生成曲面。原理就像下面这个,如果用过maya,这个图应该很眼熟。
 . `8 X1 C* j9 ^# h
 ' a  }& b7 l6 B2 f3 ^9 J6 |; i& t
  、 4 O% W; M- a0 ?( s# z8 Y& t. E, _5 W0 r1 X  _" Q0 j- s
 只要旋转台转的够匀速,拍的够清楚,这个理论上就能实现3D扫描了。。) a6 J& q9 ]9 L5 F, B! H
 事实上。。。。。。。
 , y! C* L* ]* ]# k
 6 G3 M, T4 a2 u) \2 o终结者2里面那个T2000液体金属人的模型,就是这样的原理扫描的演员,有兴趣的可以找找终结者2的制作花絮看看,本想截个图来的,但这会儿公司把视频网站全掐了。。。
 h+ S. ]: O* Q( M9 u; I- F9 |( [" n. A7 Q
 找了一个差不多的图,大家看看:
 * @: U: z: L1 ~0 b
  这个大家可能说摄像头和激光器之间的夹角不是垂直的啊,嗯,其实拍下来在软件里校正成垂直的就完事了。。。。又是三角函数的题目。。。。。。。只要摄像头和激光不在一条直线上,就问题不大。 2 Q# K; n- u- Z& i7 |8 T% K; ^3 n; a) k% }
 ) f. A1 L! p; n$ ~
 另一个比较山寨的同类算法产品。; T0 }7 @! ?( a0 m) R& C! \  P
 
 9 N; D; F' A! j1 M9 j
   | 
 |