深度知覺與各類立體圖製作方法
雙眼視覺(Binocular vision)
上述所提到的各類線索中,像差線索恐怕是最晚受到科學家注意的線索,因為自古以來都強調以單眼可以辨識出來的深度線索為作畫依據,而且在日常生活中,獨眼龍仍然能夠對9成以上的深度判斷事件作出正確反應,因此雙眼像差的重要性便不易凸顯。然而,從歐幾里德、亞里斯多德起就已經注意到,吾人的兩隻眼睛所看到的影像不完全相同,但是我們在日常生活中幾乎不曾感受到雙重影像(double images,或稱diplopia)的存在。到底吾人的視覺系統如何把不同網膜影像聚合成單一的視覺經驗?這一系列的研究也突顯了本書第一章所提到的知覺議題—知覺的形成必經過神經系統的主動運作的重要性。以下將簡述這方面研究的成果。
一般說來,只要是有兩隻眼睛的動物,都會有所謂的雙眼視覺,亦即兩隻眼睛的訊息必定要在大腦中做一個整合。但是此處要談的雙眼視覺,特別是指像人類一般,由兩隻眼睛大量交疊(overlap)的視野中,抽取出深度訊息這件事。現在我們已經知道,人類同時擁有兩隻眼睛的目的不只是抽取深度訊息而已,兩隻眼睛的運用也提供更好的空間解析度,有利於各種視覺作業的偵測與區辨。在談到雙眼像差如何引發深度感之前,先讓我們來看看兩眼網膜影像的對應關係。
如果將兩眼網膜的中央小窩區重疊,左眼網膜顳側與右眼網膜顳側對齊、鼻側與鼻側對齊,則兩張網膜重疊的位置點就被稱為對應點(corresponding point),如圖1所示。圖1也標明了兩眼凝視的位置,f,此時f點必分別落在兩眼fovea區域內,即圖中標出的F位置。圖中也標出三個兩眼對應點座標AA'、BB'與CC'。如果外界另外幾個光點a、b、c分別落在兩眼的對應點AA'、BB'與CC',則我們稱這些點(a、b、c、f)都是在所謂的零像差平面(Horopter)上。吾人在觀看這一個曲面上的每一個點時,雙眼的輻輳(convergnce)程度都一樣,亦即Horopter上的每一個光點都會自動落在兩眼的對應點。其實,Horopter這個名稱是由Aguilonius(1546-1617)首先提出,取希臘字母「觀察者」(opter)與「邊界」(horos)的意思,但是當時Aguilonius對horopter的定義與現在我們使用的定義不同(可參閱圖2 的說明),所以現在大多數書本已經不記載它的來源了。
470)this.style.width=470">
470)this.style.width=470">
470)this.style.width=470">
接下來我們要談談,什麼是像差?像差怎麼計算?
當一個物體投影在兩眼網膜上的影像不在對應點上的時候,我們定義左眼網膜落點與左眼中央小窩的視角減去右眼網膜落點與右眼中央小窩的視角,稱之為像差,請參見圖4 所示。假設圖4中,a點所造成的像差 = D(單位為徑度、radians、arc),則D = FC - B'F'(亦即F到C的視角減去B'到F'的視角)。我們可以經由幾何運算估計出該像差值與兩眼瞳孔距離(e,一般人的雙眼瞳孔間的距離約為65 mm)、f到a的距離(Δd)和凝視點距離(g)之間的關係如下:
e Δd
D≒──────────
g2 + gΔd
當Δd很小時,上式也可化約為
eΔd
D≒───────────
g2
其中1弧度 = 57.3度= 60 x 57.3 分 = 3600 x 57.3(=206280)秒。
470)this.style.width=470">
假如a點比凝視點f遠,則稱非交叉型像差(uncrossed disparity,因為兩眼視軸不會在遠處交叉而命名)或稱遠像差;反之,當a點比凝視點f近,則造成交叉型像差(crossed disparity,因為在凝視點之前,兩眼視軸必交叉而命名)或稱近像差。當然,當a點與f點重疊,則造成零像差(zero disparity)。
Sir Charles Wheatstone(1802-1875)是第一個利用像差原理作出立體鏡的人。後來 Sir David Brewster(1781-1868),也用兩個透鏡做了一個立體鏡,我們現在都慣稱這類透鏡式的立體鏡為Brewster's prism stereoscope。不過他們兩個是利用兩部相機,模擬兩隻眼睛的距離,在左眼位置拍一張照片,右眼位置再拍一張,如此拍出兩張照片之後,再用立體鏡,左右眼分別同時觀看。這類立體圖在雙眼融合前後形狀都一樣,只有深度的生動感不同,如圖5所示。
有趣的是,1854年,一個默默無聞、沒受過多少教育的商人George Swan Nottag在倫敦成立了第一個立體鏡公司之後,四年光景就賣出超過一百萬個立體鏡與各式漂亮的立體圖,而瞬間成了頗有財富名聲的人。也許讀者看到這兒,會覺得原來這些基礎的知覺原理也潛藏著許多商機,不是嘛?這個關於立體圖原理的商機到目前仍然方興未艾,除了立體鏡外,目前也用在虛擬實境(virtual reality)遊戲與機器視覺辨識上。
470)this.style.width=470">
像差深度的生理基礎
當時(十九世紀末)的科學家,包括von Helmholtz,咸認為這類像差引起的立體視覺應該是非常高層次的認知運作(high-level cognitive process)造成,亦即從雙眼不同影像內容整合出統一視覺世界(unified visual world)的活動,是一種心智活動(mental act),它絕對不是簡單的、早期視覺輸入管道的影像訊息重疊而已。Ramon y Cajal(1911)則提議,腦中應該具有一種可以整合兩眼對應點訊息的細胞,這類細胞被他稱做等動態細胞(isodynamic cell)。
其實,在更早的時候,就有人提出Cyclopean eye 這個名詞,用來指涉雙眼訊息匯聚之處。Cyclopean eye這個詞彙,因為每個用它的人都指涉不同的意義,所以我們有必要在此對它做一些詳細的介紹。原本Cyclops是指荷馬(Homer)史詩奧迪賽(Odyssey)故事中的單眼巨獸,用來敘述一個出生就只有一隻眼睛的怪物。不過十六世紀時的生理學家Galen則是把Cyclopean eye 認為是視交叉(optic chiasma)位置的眼睛,亦即在該處兩眼影像會融合成一個影像。Von Helmholtz則使用Cyclopean eye來指涉視覺系統中,以頭為中心的(head-centric)方向判斷中樞,頭轉向哪兒,此眼就面向哪兒。實際上兩眼的視向並不一定如此!但是大腦仍不會產生兩個視向(direction)的感覺,而是一個視向的統整感覺,因此這個中樞也必是兩眼訊息匯聚之處。Julesz則用Cyclopean eye泛指一切需要整合兩眼訊息才能獲得知覺結果的歷程,用來與單眼的網膜處理歷程(retinal processing)互相對照。在本書中甚至嚴格定義:單用一隻眼睛不能獲得,而必須使用雙眼才能獲得的影像特徵稱為Cyclopean stimulus。
後來,Hubel與Wiesel(1959,1962)直接在貓的視皮質區內找到雙眼敏感細胞(binocular cell)。這類細胞具有在左右兩眼上,相同位置、相同形狀的R.F.(請見圖6)。Barlow,Blakemore與Pettigrew(1967)、Pettigrew,Nikara與Bishop(1968)等人遵循Hubel、Wiesel的電生理測量方法,也相繼在眼肌被麻醉了的貓的視皮質區找到,對兩眼不同位置(即不同像差)反應的細胞,被稱為像差敏感細胞(disparity cell或disparity detectors)。這些像差敏感細胞基本上可分為三種類型:一類對零像差敏感,稱為零像差敏感細胞(tuned excitatory cell);一類對近像差敏感,稱為近細胞(near cell);一類對遠像差敏感,稱為遠細胞(far cell)。零像差敏感細胞對左右眼來的訊息並沒有特別強的反應偏好,只要刺激到左右網膜上的對應點,便會引起零像差細胞反應。但是遠細胞與近細胞就有強烈的左眼反應偏好或右眼反應偏好(又稱為ocular dominance)。
470)this.style.width=470">
這些像差敏感細胞大約分佈在貓視皮質區的17(雙眼敏感細胞約佔70%)、18、19(雙眼敏感細胞約佔34%)區(Guillemot et al.,1993)。也在貓皮質下的上丘(superior colliculus)(Berman,1975)與opossum區域(Dias,1991)看得到像差敏感細胞的蹤跡。
這樣的像差敏感細胞不只是在貓身上找到,也在猴子身上找到(Hubel與Wiesel,1970;Poggio與Fischer,1977)。但是Hubel與Wiesel(1970)當時並沒有在V1區找到像差敏感細胞,只在V2區找到。後來的研究者已經陸續在V1(Poggio,1984;Hubel)、V3(Felleman與Van Essen),甚至MT區(Maunsell與Van Essen,1983)內找到像差敏感細胞。這些像差敏感細胞的反應型態大約可區分出六類型,如圖7所示。
470)this.style.width=470">
這麼多皮質區都有像差敏感細胞,但是我們仍無法直接說,這些像差敏感細胞就是負責產生像差立體感的關鍵細胞,直到Blake與Hirsch(1975)做了貓的雙眼視覺剝奪實驗,才證實上述這些像差敏感細胞的確與深度知覺感受有直接關係。因為一生下來就被戴上單眼眼罩的貓(這個眼罩每天都會左右眼對換),從來也不曾用雙眼同時對焦的注視物體,導致皮質區的雙眼敏感細胞無法激發、生長,而找不到這些雙眼敏感細胞。反之,有正常雙眼立體感的貓,就可以找到這些雙眼敏感細胞。
但是誠如D.Marr所說的,對於每一個單一細胞的像差敏感反應我們都清清楚楚了,但是我們仍然無法做出一個機器人能夠像人一般,看出立體圖來。關鍵在於,我們不知道神經細胞之間如何傳遞、組織、計算這些訊息。以下我們將介紹Julesz 的隨機點立體圖與雙釘錯覺(double-nail illusion)現象,藉以了解神經計算在深度知覺運作上的重要性。
立體圖的製作
Bela Julesz(1960)是第一個以隨機黑白亂點製作出有立體感錯覺的人,這種圖在雙眼融合(fusion)之前看不到任何深度平面或有意義形狀,但是雙眼融合之後便可形成有意義、各類深度平面與形狀,我們慣稱這一類圖形為隨機點立體圖(random-dot stereogram,以下簡稱RDS),請讀者參看圖8。
這種圖形的製作方式很簡單,只要將兩張一模一樣的隨機點圖中的其中一張,圈選一個範圍的隨機點,將之做水平位移後,即算完成。我們以下圖8的0、1矩陣圖形表示隨機點(0表示黑點,1表示白點),中央黑色粗體的數字區域即表示圈選的範圍,注意左右兩張完全相同的粗體範圍,內部的數字矩陣完全相同,但是在水平方向上有位移。其中X、Y表示該區域在水平位移後所遺留下來的空位,可以用另外的一些隨機點填入。
將這樣的程序重複兩次,一次圈選一個大方形區域,另一次圈選小方形區域(讓小方形區域在大方型區域的中心),這樣即可做出如圖8的RDS了。
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
X |
1 |
1 |
1 |
0 |
1 |
Y |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
Y |
0 |
0 |
1 |
0 |
0 |
X |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
Y |
1 |
1 |
1 |
1 |
1 |
X |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
X |
1 |
1 |
0 |
1 |
0 |
Y |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
X |
0 |
0 |
0 |
1 |
0 |
Y |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
470)this.style.width=470">
這類RDS的觀看方式為,左眼看左圖、右眼看右圖,盡量將視線聚焦於無窮遠處(亦即想向自己發呆時的情景,兩眼直視前方的樣子),接下來你漸漸感覺到左右兩張圖像開始交疊(亦即所謂的雙眼融合過程),最後交疊成一張,或者你會看到三張圖,此時請注意中間那一張,那就是有立體感的圖像了。
對於第一次觀看這類圖形的人而言,以上觀看步驟的陳述也許還是無法讓你觀看成功,亦即你可能經驗到雙重影像(diplopia)的知覺結果,這可能是因為你還不習慣在如此情境下,調整自己眼球的視線焦距所致,沒關係,還有其他觀看的方式。圖9將左右兩張隨機點圖合併成一張,但是左眼圖中所有的白點轉換為綠色點,右眼圖中的白點轉換成紅色點,就疊成一張所謂的紅綠隨機點立體圖(anaglyph),紅綠點重疊處則成為黃色點,此時你只要戴上兩眼色澤不同的有色眼鏡,左眼是紅色的鏡片(請注意選擇讓綠色光線透不過去的紅鏡片或紅色玻璃紙),右眼是綠色的鏡片(也是選擇讓紅色光線透不過去的綠鏡片或綠色玻璃紙),或者左右眼鏡片顏色互換亦可,則幾乎馬上可以看出三層方塊的立體感,當然那副特殊眼鏡就叫做紅綠鏡。
470)this.style.width=470">
看到這兒,我想已經有讀者躍躍欲試了,因此,作者附上一個專門由灰階圖形製作出紅綠隨機點圖的套裝程式(anaglyph.exe),及簡單使用說明與範例。
其中,紅綠鏡只是用來幫助隔離開左右眼的影像,因為左眼透過紅鏡必看不到右眼的綠色圖點,右眼透過綠鏡也看不到左眼的紅點,因此紅點表示左眼網膜的隨機點圖樣,綠點分佈則代表右眼網膜的隨機點圖樣,如此一來,正如Julesz當年所做的兩張隨機點立體圖一般,將左右眼紅鏡與綠鏡交換,則原本正像差會轉變成負像差,原本負像差則變成正像差,亦即凹的變成凸的,凸的變成凹的。讀者依此推論當知道,紅綠鏡換成紅藍鏡的時候,圖點顏色變成紅點與藍點,則也可以成功產生立體圖。因為這種立體圖是以兩種顏色的色點區隔兩眼的影像,因此也無法操弄色彩,以產生多於兩種彩色的立體圖,空間解析度也會因此而降低。
除了以上兩種方法之外,還有至少五、六種方法也可讓你從平面的影像中,觀看到立體圖。例如有一種稱為autostereogram的立體圖製作方式(因為看這類圖形時不需戴任何特製眼鏡,所以命名為「auto-」),是利用實際3度空間中的光點,映在眼前2D屏幕上的落點,以形成單一一張隨機點立體圖,這也是市場上常可買到的商品。為了讓讀者親自體驗一下製作立體圖的樂趣,以下我們也附上一段最簡單的QBASIC電腦程式碼與圖11圖解說明。
470)this.style.width=470">
由於製作這些立體圖的原理很簡單,又趣味橫生,因此國外已經有許多網站以這類圖形為來製作網頁,甚至猜謎、做賀卡等等。例如http://archive.comlab.ox.ac.uk/3d.html;http://www.kondo3d.com/stereo/#THEORY是比較大的網站之一,有興趣的讀者以Yahoo搜尋引擎鍵入「stereogram」,會看到更多的網站位址,他們也有提供各類產生立體圖的程式。
DECLARE FUNCTION F (X, Y)
DIM SHARED S%
DO
CLS
INPUT "SELECT 1-7" S%
LOOP UNTIL S% > 0 AND S% < 8
SCREEN 12
XMAX% = 10: XMIN% = -10: DX = (XMAX% - XMIN%) / 6
YMAX% = 10: YMIN% = -10
WINDOW (XMIN%, YMIN%)-(XMAX%, YMAX%)
CLS
ZMAX% = 1: ZMIN% = -1: Z0 = DX / (ZMAX% - ZMIN%) / 4
RANDOMIZE TIMER
FOR I% = 1 TO 3000
Y0 = RND * (YMAX% - YMIN%) + YMIN%
ZZ = F(XMIN% + DX / 2, Y0)
IF ZZ > ZMAX% THEN ZZ = ZMAX%
IF ZZ < ZMIN% THEN ZZ = ZMIN%
XX = XMIN% + DX + Z0 * ZZ
X0 = (XX - XMIN%) * RND + XMIN%
DO
PSET (X0, Y0), 7
ZZ = F(X0 + DX / 2, Y0)
IF ZZ > ZMAX% THEN ZZ = ZMAX%
IF ZZ < ZMIN% THEN ZZ = ZMIN%
X0 = X0 + DX + Z0 * ZZ
LOOP UNTIL X0 >= XMAX%
NEXT I%
FUNCTION F (X, Y)
SELECT CASE S%
CASE 1
F = 5 - SQR(X * X + Y * Y)
CASE 2
F = -((SQR(X * X + Y * Y) > 5) AND (SQR(X * X + Y * Y) < 8)) * Y / 8
CASE 3
F = -((ABS(Y + X) < 2) OR (ABS(Y - X) < 2)) * X / 10
CASE 4
F = COS(X) * COS(Y / 2)
CASE 5
F = (((Y / 2 + 5) MOD 2) + ((X / 2 + 5) MOD 2)) / 3
CASE 6
F = X * X / 4 - Y * Y / 9
CASE 7
F = (ABS(X) < 5 AND ABS(Y) < 5) XOR (ABS(X) < 3 AND ABS(Y) < 3)
END SELECT
END FUNCTION
還有利用偏光立體鏡(polaroid stereoscope),讓左右兩眼所戴偏光鏡的光線偏振方向互相垂直,並以兩部攝影機相隔約65mm(模擬人類兩眼瞳孔的平均距離)同步拍攝影片,再以左右兩眼所戴之相同偏光鏡播放影片,則觀賞影片的人透過偏光鏡就可以看到生動的立體電影了。不管是什麼設備,它們都遵循相同的像差原則:即在物理刺激的排列上,模擬產生兩眼網膜影像之水平位移變化。
請讀者自己嘗試以上述各類方法製作立體圖的過程中,謹守以下幾個原則,方有利於觀賞:
1.製作左右眼圖像分離的立體圖片時(如圖5、圖8),兩張圖片不宜超過10度視角。因為一般人很少能在不藉助特殊眼鏡之下,自由融合(free fusion)達10度以上,所以建議讀者試著利用電腦軟體,等比例縮小兩張圖直到可以輕鬆融合為止。
2.觀賞左右眼圖像分離的立體圖片時,盡量將兩張圖片靠在一起,打光均勻,不要一張亮、一張暗,以免影響融合。
3.產生的像差值不宜過高,因為在一定距離內,人類可以感受到的像差深度是有限的。
如果您嘗試了許多種方法和儀器,仍然看不出一般人看得出來的立體圖,別慌張,這並不一定影響到您日常生活中的深度判斷,但建議您可以去眼科醫師那邊做個詳細檢查,看看是否是斜視太嚴重?或者是立體盲(stereo blind)了。
470)this.style.width=470">
然不同的3D物體可能有相同2D網膜上的投影(即便是同一物體也會因為觀看角度不同,而有不同的網膜投影),因此,同一種雙眼網膜上的光點排列位置,可能對應外界兩種或兩種以上的深度安排。此時視覺系統如何消除錯誤的安排(我們稱這些錯誤的安排為「假目標」),留下正確的排列?這個問題在立體視覺研究領域中,是一個相當重要的基本問題,又被稱為「假目標問題」(False Target Problem),或稱為「雙眼配對問題」(binocular correspondence problem),因為它涉及兩眼網膜影像配對歷程的探討。
用來說明假目標問題最簡單的例子是雙釘錯覺。請讀者參考圖13,想像距離雙眼中線(median plane)前方約30公分處,存在前後兩根釘子(標為A、B),相距2公分,則其分別在兩眼網膜上的投影點為2、3與1、4。不過,如果這兩根釘子位於C、D空間位置上的時候,其分別在雙眼網膜上的投影點也是1、2、3、4四點,此時,該個體是看到外界空間中存在A、B兩物體?還是存在C、D兩物體?不論是看到A、B,或者是看到C、D,視覺系統必定這兩種情況中選擇一種「解答」,因為我們不是看到A、B,就是看到C、D,不會四個點同時看到。那麼,視覺系統如何得出這樣一個「解答」?
470)this.style.width=470">
Marr與Poggio(1976)首先提出一個可能的算則,來說明神經細胞獲得該解答的計算方式。Marr認為,視覺神經系統經過長期演化所發展出來的神經網路,必定能反應外界自然物的真實性,因此我們可以透過對自然事物之空間關係的限制條件(constraints),反過來猜出該神經網路的計算方式。
就好像小時候大家所熟悉的猜幾A幾B的數字遊戲一般,當你發現猜1234,結果是1B(即猜中一個數字,但該數字的序列位置猜錯),猜5678結果是3A(即猜中3個數字,而且該3個數字的序列位置也猜對),則可以推論出答案中必定沒有9、0兩個數字。其中1B與3A的回饋,就好比上述的限制條件。
透過仔細觀察,Marr發現以下三個可能的限制條件:
(1)連續性條件(continuity):亦即自然物之深度訊息的安排,除了邊界之外,通常都是連續的;
(2)相容性條件(compatibility):即同一個物體投影在左右兩個網膜上的影像亮度多是匹配的,亦即外界的黑色點投影在兩網膜上,也應該都是黑色點,反之,白色點投影在兩網膜上,也應該都是白色點,不可能外界白點投影到左網膜上是白的,但是投影在右網膜上卻變成黑的;
(3)唯一性條件(uniqueness):除了少數透明感例子之外,同一個視向(visual direction)上,雙眼像差配對只能有一種深度配對結果,不允許多重配對,例如圖14中,左眼編號1的位置與右眼編號3的位置配對之後,通過AD1三點的視線與通過AC3三點的視線上,便不可能再有其他網膜影像配對結果發生。
雖然Marr的猜測正確地模擬出Julesz創造的隨機點立體圖之配對結果,但是該算則仍有許多限制,例如多重配對的例子(圖14)、壁紙錯覺(圖15)、立體攫取現象等等,都無法以該算則模擬出來,而且也無法應用在具有灰階的、複雜的實際影像(real image)上。後來的研究者夙夜匪懈,相繼提出許多算則來解決以上問題與實際影像的困境(Pollard, Mayhew, 與Frisby, 1991;P. Churchland, 1996)。