Stereoscopic Scene/Optical Flow for 3D Motion Understanding

by allenlu2007

前文介紹 optical flow 時,highlight 幾個關鍵問題。

(1) Optical flow 是 3D motion project 在 2D camera plane (u, v).  所以深度的 information 已經失去。深度方向的運動也無法偵測 (除了用間接方法估計物體大小的變化)。一般我們也只計算 2D motion vector.

(2) OFC 是用一個 equation 來 constraint 兩個 variables (u, v).  無法精確的解出真的 motion vector (u, v).

(3) Untexture and aperture 問題。

 

一個自然的想法是延伸一般視覺的觀念,使用兩個 camera (stereoscope) capture 3D motion.

因為多了一個 camera, 相當 camera plane 從 2D 變成 3D.  直覺上多提供的 local information 可以更準確 capture 3D motion.  事實上,這要看我們是要計算 2D optical flow (u, v), 還是 3D scene flow (u, v, w).  w 是深度方向的運動。

如果是計算 2D optical flow, 的確多的 information 可以解決 OFC constraint 不足的問題。但如果想計算 3D scene flow.  仍然會有 information 不足的問題,需要更多的 local information 或是 global information.

 

先從 (3) 看起。

如果 untexture, 不管 1D, 2D, 3D camera plane or space 都無法只用 local information 計算 real 3D motion.

Untexture 還是需要 global information like edge, corner, etc. 計算 motion. 

How about aperture 問題?  記得前文提到 aperture 問題是在某一方向 intensity gradient = 0.  

因此任何平行於這個方向 (intensity gradient = 0) 的運動都無法偵測。但垂直方向的運動可以計算 (normal flow).

如果增加一個 camera B,理論上對 camera A “intensity gradient = 0” 的方向,不一定會和 camera B “intensity gradient = 0” 的方向相同。因此可以藉由組合 camera A 和 camera B normal flow 得到真正的 flow vector.

但是仍有例外,如果 “intensity gradient = 0” 的方向是和 camera A 到 B 的方向平行,此時這個方向的速度是無法偵測。

另外如果在遠距離 (d >> L, where L is camera A to B) 時,camera A 和 B 的 information 基本上一致。仍然會有 aperture 問題。


再來看 (2)

如果假設物體 motion 是 2D, 沒有深度方向的運動。Stereoscope 多提供了一個 OFC, 可以更正確解出 local motion vector (u, v).

再來看 (1)

真實物體 motion 是 3D, 或稱為 world flow.  這在 1 camera 2D optical flow 基本上只能靠更高階的 information 如 solid object 大小變化, etc. 來估計。

在 stereoscope 2 cameras 提供更多的 information, 但如果要估計 scene flow (u, v, w) 也多了 w variable.  因此仍然無法只用 local information.  可能可以用類似 LK method 便用 patch 來估計。或是用 global information.

 

 

 

Advertisements