本帖最后由 wzwangsc 于 2016-2-23 16:02 编辑 . r4 ~6 V/ j7 D1 D& W
8 B6 L' Y/ n2 S& _" d; B2 ` 三、使用2D+深度图制作镜头模糊
! p' ^! E% ~5 Z+ ~4 I; b# G+ i- j5 r' p. {* h
所谓“镜头模糊”,指的是向图像中添加模糊以产生一定的景深效果,以便使图像中落在焦点景深内区域清晰显示,而景深外区域随离焦点距离的远去而逐渐虚化。显然,要制作“镜头模糊”,必须要知道图形中各像素的位置关系,深度图就提供了这样的一个位置关系。
0 E3 v+ `0 ^6 I* g* O PS中就有一个可用于2D图形的“镜头模糊”滤镜,该滤镜使用深度映射来确定像素在图像中的位置,有三种选择:无、“透明度”和“图层蒙板”。在“无”的情况下,主要以使用简单的选区来确定哪些区域变模糊。在选择了深度映射的情况下,使用十字线光标来设置给定模糊的起点,而后可以使用Alpha 通道和图层蒙版来创建深度映射;Alpha 通道中的黑色区域被视为好像它们位于照片的前面,白色区域被视为好像它们位于远处的位置。这种“深度映射”所反映的像素位置关系显然远没有深度图那么正确。
% G! ~- Q% d/ l/ {7 e/ D
1 S/ C5 e3 r1 F4 n) G: a- C 例3:下面这个图形是2D+深度图组合的双图,对该2D图形制作镜头模糊的操作方法如下:
0 b5 j9 A+ r8 @) F) ^ }8 ^, q (这些操作中的2D图最好要拍得清晰,不要虚化)
3 x3 t0 T! w& E/ k$ \7 m/ ]+ }2 {4 d
$ C5 S8 b$ Z& E( |' I: r% p: T' ^; Q! {0 X) r8 U
1. 使用菜单项“File -> Open Stereo Image...”打开上面这个图形。
- s# V4 Y4 O* N* c. m k8 ^( c1 P
+ Y& J8 d% b" ^9 v& m, G* w( a0 F
U% {8 i& O* u0 A4 B. J: ^- J6 R
0 l# q4 Z/ {7 l6 E 2. 选择菜单项“Edit -> Depth map... -> Lens Blur from 2D+Depth...”
# |$ u* s/ P3 ~( K
: k, b( x) O% T0 |6 Z
% B* W( H3 m7 u' _. O0 m3 u I
, I- y, F$ C2 _6 X4 e' Z8 ] 3. 弹出如下一个对话框: 5 B6 x2 d% d- t& t8 ?1 b# l: j
+ B$ x6 r& X. ^3 o1 }: i6 S, |- t8 ?5 ?
& W3 l/ [8 R0 k% x& e
) c3 _ B8 U# U3 X( g 与PS中的“镜头模糊”相比,这里可选择的参数很少,只有一个“模糊”(Blur)可选,可取0-9,数值越大,景深越小,模糊程度越大。
`: o3 S8 k* S4 J& {# N) E' ~, S" M- S) ^8 C" o
4. 用鼠标点取图像上焦点所在处,则该处景深内像素会变清晰,其它景深外像素则逐渐虚化,效果见下图,注意,图中鼠标图形处是焦点。
9 u m! B; i. R5 n+ T+ A9 [
% s; D) g/ ?1 |" `
. B/ j/ ~* K( M: S( P- b `" X
8 O( E& _' p4 ?8 G. Q" s 鼠标点击图像任意一处都会立时显示其效果:
% p$ n6 G$ }# k' H4 p' M; Q8 A
. k6 Y, i& K: g7 a! X% d
/ s6 v5 N" |2 C# P4 ]: t/ D/ x
6 V/ ] F3 f5 @4 \4 \5 d5 k4 ~ 5. 你还可以拉动“Blur”滑块改变模糊程度以观察相应效果。
8 b$ o6 T/ O' p3 X1 j" ]2 g, `' P
0 A4 h% C) }4 b) U
' B( W( A! ` F, G: f! q 这时模糊程度改为7,继续改变焦点以观效果。
0 Y' J) w" l' A5 f" G$ _# g" U/ c) y; T- ~- E" V
2 l5 I5 e; L z
' z# w7 m) M; k4 ]- `3 @: C2 O
" L5 M8 y8 i3 H# x
6 ]6 ^7 _* d$ r' b5 l' `& Z$ r/ g. x2 k* ?1 N; Z/ k
6. 选择比较满意的效果,点击“OK”得到结果图如下 H: S4 r" {0 _. L8 p9 t! y
1 l4 |, f, c8 p" i
* |& F& W! Y2 s& g& E/ N
1 Z& a6 k' c; q) a8 k. e' Q
如果你只需要对2D图虚化,则保存左图即可,如你要得到虚化后的立体图,则继续执行例1中的操作(3)、(4)、(5)。
% ?9 V9 Y1 O5 h' G4 i1 h
2 l8 q7 M( I$ _1 f* J 这个功能如同光场相机一样,先拍照,后对焦,只要深度图精确,虚化效果要比使用PS的好,只是SPM中的算法不是很完美,可选择的参数少,有时会出现不合理的现象,期待后续版本的改进。
3 x1 ]8 ]0 i/ H9 w d& v2 Y7 Y% v8 a' K5 n8 p, p6 w
6 f9 c; U. i* t. A; j: L# L V5 M
四、使用Google Camera(谷歌相机)得到深度图
+ d0 c- M5 u7 v/ R% [6 Y- C
* c. G% R6 N# u4 U7 U/ `6 M" C8 v* Y 如何获取深度信息?一般说来,摄像系统接收来自场景发射或反射的光能量,形成有关场景光能量分布图像,然后在这些图像的基础上恢复场景的深度信息。光场相机应该是目前获取场景信息最完备的摄像系统。对于一般的摄像系统,一般的方法是使用两个相隔一定距离的摄像机同时获取场景图像来生成深度图。与此方法相类似的另一种方法是一个摄像机在不同空间位置上获取两幅或两幅以上图像,通过多幅图像的灰度信息和成象几何来生成深度图。深度信息还可以使用灰度图像的明暗特征、纹理特征、运动特征间接地估算。5 Y* d* {5 s; ^; j
目前手机摄影都在追求先拍照后对焦的拍照模式,这就要求手机拍照系统能提供场景深度信息,例如HTC One M8就提供了双镜头系统,其中一个镜头拍照,另一个镜头则記錄環境內的深度資料。: }# C5 l' u4 V% Q
谷歌公司发表过一款名为“Google Camera”的照相应用程序,该APP自版本2.4.025起,增加了“镜头模糊”(Lens Blur)的拍照模式,使用一个摄像系统来拍摄景深照片。该APP当前只能在搭载了Android 4.4 KitKat或更高版本的手机/平板上工作,用户可以先拍照后对焦。开启这一模式下,按下快门后,系统会提示用户“需要缓慢的移动设备,并将拍摄主体保持在取景器中心的位置”,然后才能完成拍摄。 A& E; Y: `: m7 H7 x2 ^
, q. l, W. i/ p D
3 @& n0 \/ T0 v/ j+ _. H
0 b* i7 B. j4 f: }. A 图片拍摄完成之后,用户可以编辑图片,通过点选对焦点编辑景深效果。Google Camera 在“镜头模糊”拍摄模式下所保存的JPG图形文件含有深度图信息,例如下图就是如此(该图已被论坛系统压缩,不再含深度图信息,点击此处下载原图):
: X7 I! r+ F8 ?3 a
* R" i9 i( `- A# w$ f/ I7 Z
( e8 m- m; L. s% Q, M
& F1 u6 _" @* M: p" W- x 一般图形处理软件无法获取这些信息,但SPM 软件却可以,其实 SPM 增加深度图功能的初衷就是为了能读取这些图形文件,操作方法很简单,只要在打开SPM 软件后,使用菜单项“Edit -> Depth Map... -> Open Jpeg include depth map”
+ p6 U2 j0 ^- i: ^% s1 k+ D! d o( k! K& u2 c. w
: g5 R5 Y+ `$ D/ H
; F( O7 C* q% R# a8 P7 Y7 i x# z 在弹出的对话框中选择相应文件
+ T) F3 @0 c6 J: X% Q$ M: J: a, c/ b7 g+ x4 y
8 h5 \9 M+ d. ^5 c, a$ c( |5 N- O/ |* O9 y- q3 h
点击“打开”按钮,SPM就会提取其深度图,并将该图和其深度图合并为双图9 m5 c$ A# t) V8 \
' X8 s2 H+ Q* ~" `' W
* D9 P1 W0 c* a( m9 Y K
7 l- d# {9 i- E! `& R* p: [ 剩下的操作见“在SPM中如何使用深度图(上)”的例1 的(3)、(4)、(5),结果如下:
" k7 J5 V7 v" D! ?! W4 X: g5 @" o" X* W2 s' c9 }8 m
. M9 W8 z! t. j5 L9 ]) c w3 ?: z
/ }: j) k. ]1 h# D" k
$ I, M- `0 k3 H; B2 _7 \( G0 {
; @ a; |% q ?/ a8 J8 g
- W& ?. L, h% q3 `
附最新版本的“Google Camera”的下载地址:2 q7 Q, q2 a2 T6 G+ e
4 h* y0 z! @: `8 ]http://m.shouji.360tpcdn.com/150619/9976435b66b357031a5c8383421614c6/com.google.android.GoogleCamera_25052130.apk. R" ?5 A; ~: i1 x( n- d7 J
* d2 ]- N' [) O6 T% o+ P 五、立体图的旋转' n) _4 |, I& a* Q" K4 o( e
1 n! A) T+ n! b 如下图所示,这样的双机竖拍可以吗? }4 r: E- M/ c: @
& E$ B$ F6 _& \5 v
g/ M8 S: `" m& t, t
; E2 ]$ w' q$ G5 B3 M 当然,直接以这两张竖拍图组双图是无法得到真正的立体竖拍图,上面双机竖拍得到的真正立体图是下面这张双机横拍图:' f( [- v5 \/ n- l8 p$ D' o
9 n4 F' U0 C# | H6 g" o& F" |
; ~8 i/ d8 Y8 Y: `3 B. ?2 y5 o
# F+ |" c0 a( K5 {# Q 使用软件“StereoTracer”,由上面这张正确的立体双图得其左图的深度图为: n$ [, S ^& z( k# E. o2 \
/ E4 \( I1 M' d$ p1 \4 J
: R0 ?5 x- d: `, b- K3 P0 f" D
1 Y* b B l# @
将左图左转90度,显然新的左转图的深度图也应是原深度图左转90度,将左转后的左图和深度图组双图如下:
# C0 U- t- u/ C: w Q. H- {: o, P. a( J$ @
$ J8 l! L" V5 L1 R
% o5 H; R9 r8 ^5 M 于是就可以使用“在SPM中如何使用深度图(上)”中介绍的方法,得到真正的立体竖拍图(有裁剪):
+ w; W+ X; ^4 ^) x; b4 l1 ]8 f) i! ^: B m
/ ?+ Y% K, L! y
X- v. t* g& o1 S) E
: N, y) R* X8 m; Z1 t1 j& B9 x
7 E: `0 D: h- j; X. @& S 下图是由富士W3机(W3配有两个镜头,所拍照片以MPO格式存贮)竖拍的原图:
' y v* c: f7 g2 n( C: \
) z! x0 Y/ {% X" h4 o/ O W
. D, X$ g. k: `$ R* q9 {5 ]
/ M5 N7 \1 H) R
; ] I# f4 ]4 x) ^* _& X
9 ^8 d( d) w: K6 H
经SPM处理后的竖拍图为(有裁剪等处理):
2 \# [0 i/ } I$ T' P0 W( [3 H0 w
4 y* T. T- y" ?2 ~0 l
! \/ y) t4 X% F4 K$ S! R2 q$ t& Z' I
2 z8 {. P+ n1 {: m3 i/ ^, L( S/ H
, I: o# \/ [* N1 U: V 由上可见,相比立体图的平行、交叉等格式,立体图的最好的表示方法应该是 2D+深度图,只是现在的深度图只有256个数据等级,远不能精确表示空间的景深关系,另外,现在的所有转换深度图的软件都不能真正将3D场景完美的转换为深度图。
8 A- L" {" A( c1 F2 ]
9 G, d6 s# `$ A, b4 ^未完待续...4 q! q& k# X$ X% P. E6 H% H
9 n1 ^" V. k1 n8 ~: q6 C: A
: I+ K6 K3 p: `- S# A2 K |