專利名稱:根據(jù)一3d對象的2d投影再生和處理該對象的設備和方法
技術領域:
本發(fā)明是關于處理3D對象的2D投影的設備和方法,特別是關于作2D投影圖象的幾何分析的設備和方法。
發(fā)明的背景描述處理3D對象的2D投影的現(xiàn)存技術方法的狀態(tài)的發(fā)表及其相關技術在后面引用的參考文獻中有說明。
本說明中所提到所有發(fā)表物和這里引用的發(fā)表的揭示內容均在此被采用作為參考。
發(fā)明概述本發(fā)明是試圖提供用于從一3D景象的第一和第二參考視圖產生一3D景象的新視圖的圖象變換設備和方法。
本發(fā)明還試圖提供為由一3D景象的第一、第二和第三視圖產生其3D景象的3D表示的再現(xiàn)方法和設備。
本發(fā)明還試圖提供為處理3D對象的2D投影的改善的設備和方法。
本發(fā)明另外還試圖提供用于根據(jù)對一3D對象的三個視圖定義的三線性張量作此3D對象的圖象變換的方法。
本發(fā)明還試圖提供由一3D景象的第一和第二參考視圖產生此3D景象一新視圖的圖象變換方法,此方法包括提供一3D景象的第一和第二參考視圖,利用分別有關第一參考視圖、第二參考視圖和新視圖的幾何信息來產生一表明第一、第二和新視圖之間的幾何關系的三線性張量,及以根據(jù)第一和第二參考視圖內的第一和第二對應位置以及三線性張量計算多個的各自對應于此不同的第一和第二對應位置的新視圖位置來產生此新視圖。
此提供步驟可包括例如在第一和第二參考圖象中進行掃描。
此利用步驟可包含例如分別在第一參考視圖、第二參考視圖和新視圖中產生第一、第二和第三位置組的步驟。
這樣,按照本發(fā)明一優(yōu)選實施例而提供有用于由一3D景象的第一和第二參考視圖產生其新視圖的圖象變換方法,此方法包含提供一3D景象的第一和第二參考視圖,利用各自有關第一參考視圖、第二參考視圖和新視圖的幾何信息來產生表明第一、第二和新視圖之間的幾何關系的三線性張量,和以根據(jù)第一和第二參考視圖中的第一和第二對應位置及三線性張量計算多個各自對應于不同的第一和第二對應位置的新視圖位置來產生此新視圖。
而按照本發(fā)明一優(yōu)選實施例,此提供步驟包括在第一和第二參考圖象中進行掃描。
而且按照本發(fā)明一優(yōu)選實施例,此利用步驟包含分別在第一參考視圖、第二參考視圖和新視圖中生成一組第一、第二和第三對應位置的步驟。
按照本發(fā)明一優(yōu)選實施例還提供從一3D景象的第一、第二和第三視圖生成此3D景象的3D表示的3D景象再現(xiàn)方法,此方法包含提供一3D景象的第一、第二和第三視圖,利用有關此第一、第二和第三視圖的幾何信息產生表明第一、第二和第三視圖之間的幾何關系的三線性張量,和由此三線性張量產生此3D景象的3D表示。
而按照本發(fā)明一優(yōu)選實施例,此產生一3D表示的步驟包含由此三線性張量計算第一和第二視圖的表射偏振幾何表示,和由此表射偏振幾何顯示生成此3D表示。
按照本發(fā)明的另一優(yōu)選實施例還提供圖象變換設備,用于由一3D景象的第一和第二參考視圖產生此3D景象的新視圖,此設備包含用于提供一3D景象的第一和第二參考視圖的設備,用于利用各自有關第一參考視圖、第二參考視圖和新視圖的幾何信息來產生表明第一、第二和新視圖之間的幾何關系的三線性張量的三線性張量發(fā)生器,和通過基于第一和第二參考視圖中的第一和第二對應位置和三線性張量計算多個各自對應于此不同的第一和第二對應的新視圖位置產生該新視圖的新視圖發(fā)生器。
按照本發(fā)明的另一優(yōu)選實施例還提供用于由一3D景象的第一、第二和第三視圖產生此3D景象的3D表示的3D景象再現(xiàn)設備,此設備包含用于提供一3D景象的第一、第二和第三視圖的設備,利用有關第一、第二和第三視圖的幾何信息產生表明第一、第二和第三視圖之間的幾何關系的三線性張量的三線性張量發(fā)生器,和用于由三線性張量產生3D景象的3D表示的3D景象表示發(fā)生器。
按照本發(fā)明的另一優(yōu)選實施例還提供由一3D對象的至少一個而最好為三個2D投影來產生關于此3D對象的信息的方法,此方法包含提供一3D對象的至少一個而最好三個2D投影,產生一以aijk=vi′bjk-vj″aik(i,j,k=1,2,3)定義的數(shù)矩陣,其中aij和bjk分別為矩陣A和B的元,vi′和vj″分別為向量v′和v″的元素,而這些矩陣和向量一起描述此3D對象的三個視圖的攝象機參數(shù),并利用此矩陣生成有關此3D對象的信息。
按照本發(fā)明一優(yōu)選實施例還提供一由一3D對象的具有n個對應點Pi和Pi′(i=1…n)的第一和第二現(xiàn)有視圖產生此3D對象的一新視圖的方法,此方法包含產生一張量aijk和將點Pi和Pi′(i=1…n)的值插入到三線性公式,由此來提取表示新視圖中的位置的x″、y″值,和根據(jù)插入步驟的結果產生新的視圖。
按照本發(fā)明一優(yōu)選實施例還提供由一3D對象的至少一個而最好三個2D投影再現(xiàn)此3D對象的方法,此方法包括提供一3D對象的至少一個和最好三個2D投影,產生由αijk=Vi′bjk-Vj″aik(i,j,k=1,2,3)表述的數(shù)的陣列,其中aij和bik分別為矩陣A和B的元及Vi′和Vi″為向量v′和v″的元素,而這些矩陣和向量一起說明此3D對象的三個視圖的攝象機參數(shù),將陣列置換成與3D空間內的三個對應平面相關連的三個單應性矩陣,和利用此三個單應性矩陣再現(xiàn)3D對象。
按照本發(fā)明一優(yōu)選實施例還提供一視覺識別方法,包含提供一3D對象的三個視圖間相互間存在三線性關系的三個透視圖,和利用視圖之間的三線性關系通過對準來進行視覺識別。
按照本發(fā)明一優(yōu)選實施例此方法還包含對此3D對象作再投影。
按照本發(fā)明一優(yōu)選實施例,有關3D對象的信息還包含3D對象的再現(xiàn)。
另外,按照本發(fā)明一優(yōu)選實施例,有關3D對象的信息包含至少一個不再現(xiàn)3D對象而產生3D對象的新視圖。
而按照本發(fā)明一優(yōu)選實施例,此至少一個和最好三個的2D投影包含至少一個航攝照片。
按照本發(fā)明一優(yōu)選實施例,此至少一個和最好三個2D投影還包含至少一個衛(wèi)星照片。
而按照本發(fā)明一優(yōu)選實施例,有關3D對象的信息包括3D對象的至少一個座標。
而按照本發(fā)明一優(yōu)選實施例,3D對象包括一宇宙空間對象。
按照本發(fā)明一優(yōu)選實施例,此3D對象還包含一如輪船的大的對象。
按照本發(fā)明一優(yōu)選實施例,3D對象還包括不實在的對象。
按照本發(fā)明一優(yōu)選實施例,還提供由一3D對象的至少一個和最好三個2D投影產生有關此3D對象的信息的設備,此設備包含用于提供一3D對象的至少一個和最好三個2D投影的設備,一陣列發(fā)生器用于生成一以αijk=Vi′bjk-Vj″aik(i,j,k=1,2,3)表述的數(shù)的陣列,其中aij和bjk分別為矩陣A和B的元及Vi和Vi″分別為向量V′和V″的元素,而這些矩陣和向量一起描述此3D對象的三個視圖,和一利用此陣列產生有關3D對象的信息的陣列分析器。
按照本發(fā)明的一優(yōu)選實施例,還提供用于由一3D對象的具有n個對應點Pi和Pi′(i=1…n)的第一和第二現(xiàn)有視圖產生此3D對象的一個新視圖的設備,此設備包含用于產生一張量αijk的設備,和用于將點Pi和Pi′(i=1…n)插入到三線性公式,由此來提取表示新視圖中位置的X″,Y″值,和根據(jù)此插入步驟的結果產生新視圖的設備。
按照本發(fā)明一優(yōu)選實施例還提供由一3D對象的至少一個和最好三個2D投影再現(xiàn)此3D對象的設備,此設備包含提供一3D對象的至少一個和最好三個2D投影的設備,一陣列發(fā)生器用于生成一以αijk=vi′bjk-vj″aik(i,j,k=1,2,3),表述的數(shù)的陣列,其中aij和bjk分別為矩陣A和B的元及Vi和Vj″分別為向量V′和V″的元素,而這些矩陣和向量一起說明此3D對象三個視圖的攝象機參數(shù),一將此陣列置換為與3D空間中三個對應平面相關連的三個單應性矩陣的陣列變換器,和進行利用此三個單應性矩陣來再現(xiàn)此3D對應操作的3D對象再現(xiàn)器。
按照本發(fā)明一優(yōu)選實施例還提供視覺識別設備,包含有用于提供一3D對象的相互間存在三線性關系的三個透視圖的設備,和用于利用視圖間的三線性關系通過對準來進行視覺識別的設備。
而按照本發(fā)明一優(yōu)選實施例,執(zhí)行上述方法的至少一個結果被采用來進行下述應用中的至少一個由航空和衛(wèi)星攝影繪制地圖及宇宙空間和船裝配場座標測量,生產部件的座標測量(CMM),生產部件的自動光學檢測,無人操縱單元對準,無人操縱軌跡識別,3D自動操縱反饋,景象的3D模擬,對象的3D模擬,反相工程,和3D數(shù)字化。
用于識別的代數(shù)運算過程下面將參照
圖1-5來作說明。
附圖的簡要說明結合附圖,從下面更詳細的說明中將理解本發(fā)明。
圖1表示在有噪音的情況下表射偏振交叉方法的性能與三線性函數(shù)方法的性能之間比較的2個示圖,其中點線表示表射偏振交叉法,而實線表示三線性函數(shù)法;
圖2表示2個模型三維景物的視圖及第三重投影視圖;圖3為利用三線性結果的重投影示圖;圖4為利用表射偏振線的交叉的重投影示圖;圖5為利用視圖線性組合方法的重投影的示意圖;圖6為根據(jù)本發(fā)明一優(yōu)選實施例構造和運行的3D景物再現(xiàn)設備的簡化的功能模塊圖,其中該設備用于從一3D景物的至少三個視圖生成該3D景物的3D表示;圖7為根據(jù)本發(fā)明一優(yōu)選實施例運行的一優(yōu)選3D景物再現(xiàn)方法的簡化流程圖,其中該方法用于圖6的設備;圖8為根據(jù)本發(fā)明一優(yōu)選實施例構造和運行的圖象變換設備的簡化的功能模塊圖,該設備用于從一3D景物的至少2個參考視圖生成該3D視圖的一新視圖;圖9為根據(jù)本發(fā)明一優(yōu)選實施例運行的一優(yōu)選圖象變換方法的簡化的流程圖,該方法用于圖8的設備;圖10為也示于圖2中的鞋的3D再現(xiàn)的示意圖;圖11為用于確保零件質量的優(yōu)選方法和設備的說明的簡化方塊圖;及圖12為用于產生數(shù)字地圖的優(yōu)化方法和設備的簡化方塊圖。
在此還附有助于理解本發(fā)明優(yōu)選實施例的附件,即附件A圖6所示的三線性計算單元50及表射偏振幾何生成單元60的優(yōu)選操作的“C”語言的表列;及附件B根據(jù)本發(fā)明的一優(yōu)選實施例構造和運行的3D再現(xiàn)設備的優(yōu)選軟件操作的表列。
優(yōu)選實施例的詳細說明一針孔照相機,如35mm靜物攝影機或攝象機,產生被觀測的三維(3D)世界的二維(2D)投影。所得圖象可按幾何和光度標準加以分析。幾何標準是指在3D中特征細節(jié)(點,線)的位置與它們各自在2D圖象中的位置之間的幾何關系。光度標準是指景象與圖象中的亮度(象素的灰度值)之間的輻射度(表面的反射特征,照亮景物的光源的光譜特性等)關系。
3D世界被模擬化成一群點,2D世界也是如此。換言之,人們辨認圖象中對應于3D中點特征的點特征。在此二組點之間存在著幾何關系。當攝象機在3D中運動時人們獲得同一3D世界的(亦即相同的3D點群的)更多的圖象,而相關的問題就在于對應的2D圖象點組與3D點組之間的幾何關系。換句話說,如果Pi表明一組3D點,而pi,pi′,pi″為三組(在三個圖象中)被安排成帶有同一附標i的點對應于同一3D點Pi的2D點的話,則這組圖象即單獨地揭示大量此3D組的信息。
這里有二個要關心的問題(i)為恢復3D點的位置(再現(xiàn))哪些特征必須在2D圖象中加以測定(多少點跨越多少圖象);(ii)已知圖象對應關系,能否合成新的視圖(圖象變換問題)而無須明確重現(xiàn)對象。本發(fā)明即為處理這兩個問題。
3D至2D的總體內容是Computer Vision(計算機視覺)中的一活躍范圍(運動結構和主體觀測),并且是攝影測繪工程中的唯一工具(由航空和衛(wèi)星照片描制地圖,宇宙空間和船塢裝配場地中的座標測定等)。
3D點與2D點之間的關系可被表示成一3×4變換矩陣p≈MP式中p=(x,y,1)T表示齊性座標中的2D點(亦即圖象平面為2D投影面),其中x,y為圖象中點的位置的水平和垂直分量(相對于某任意的原點,例如圖象平面的幾何中心);p由一4-向量表示,這是指將對象空間看成為被包圍在三維的投影空間內。矩陣M為3×4,代表攝象機參數(shù)(例如,以MQ=0定義的向量Q為攝象機的投影中心-所有光線的會聚點)。符號≈是指按比例相等。
因為是將圖象和對象置入投影空間內(這就是說這些可經受剛性的運動和能被伸展及剪切)所以能將對象空間進行變換來使得與第一視圖相關連的攝象機變換成為[I,O],其中I為識別矩陣。對于三個視圖,有
p=[I,O]Pp′≈[A,υ′]Pp″≈[B,υ″]P式中P=(x,y,l,k)T,圖象點為p=(x,y,1)T,p′=(x′,y′,1)T和p″=(x″,y″,1)T。應指出,在圖象中測量的是p、p′、p″的位置,P的位置(即K的值)是未知數(shù)。A和B是3×3的矩陣(相互不是獨立的),而v′、v″為共同描述三個視圖的攝象機參數(shù)的3-向量。應指出,攝象機參數(shù)A、B、v′、v″是未知的。換句話說,給出三個帶有對應的點pi,pi′,pi″(i=1…n)的視圖,就存在一組數(shù)Ki,和參數(shù)A、B、v′、v″使得在上述等式對于所有i均成立。
I.三線性張量以下式描述的27數(shù)字陣列αijk=vi′bjk-vj″aik]]>i,j,k=1,2,3式中ars、brs為A,B的元素,而vr′、vr″為v′、v″的元素,該陣列被稱之為“三線性張量”。這些數(shù)字對3D和2D世界的特定投影表示均是不變的,亦即它們是此三視圖所固有的(這是張量的普遍特性之一,它們不取決于為表示所選擇的依據(jù))。
應指出,陣列αijk提供作許多應用的基礎。下面將說明由圖象測量值p、p′、p″產生陣列的優(yōu)選方法。A.由圖象測量值恢復αijk一適當?shù)娜龜?shù)組p,p′,p″滿足多個三線性關系。第一標注以固定某些下標而改變其他來區(qū)別向量和矩陣。例如,αijk是一組標量,αij是一由9個向量組成的組(K變化而i,j維持固定),αi是一由3個矩陣組成的組(α1…,α2…和α3…)等等。
對一給定的順序(即不置換視圖)具有9個三線性函數(shù),以4個線性地獨立的公式的組出現(xiàn)。這些公式的系數(shù)為陣列αijk的元素。例如以下4公式即是三個視圖的線性獨立的可變函數(shù)x″α13T.p-x″x′α33T.p+x′α31T.p-α11T.p=0,]]>y″α13T.p-y″x′α33T.p+x′α32T.p-α12T.p=0,]]>x″α23T.p-x″y′α33T.p+y′α31T.p-α21T.p=0,]]>y″α23T.p-y″y′α33T.p+y′α32T.p-α22T.p=0.]]>其于的函數(shù)在這里提出的等式5-11中說明。
由于每一對應的三個值組p,p′,p″提供四個線性獨立的等式,所以七個跨越三視圖的對應點唯一地確定(按比例)張量αijk。
注1這一點的意思就是,如果要識別7個跨越三個視圖的對應點的三組值-例如說對象是一人的面孔而跟蹤跨越三視圖的鼻棱其在第一視圖中的位置表示為(x,y),在第二視圖中的位置表示為(x′,y′)和第三視圖中鼻的位置為(x″,y″)-則每一這種三組值即提供所試圖獲得的27個參數(shù)的4個線性獨立的等式。這樣即得到大于足夠求解αijk需要的28個等式。
注2為線性系統(tǒng)求解可有許多方法,特別是在提供的等式多于未知數(shù)時(亦即在給出多于7個對應的三組值時),例如最小二乘方技術,和為在最小二乘方技術中消除外層的增強法。
II.秩4約束跨越多于3個視圖的張量連接給出一組m>3的視圖,則整個視組圖的各個3視圖子集的三線性張量不是不獨立的,而事實上是相互作線性相關的。這種關系下面將稱之“秩4約束”。
這里將三視圖的張量安排為一標以G的9×3矩陣中的張量,其中列j=1,2,3含有元素α1,j1,α1,j,2,……α3,j,3。
假定將任一組m視圖安排成為ψ1,ψ2,ψj,j=3……m??紤]視圖<ψ1,ψ2,ψj>的m-2張量并使對應G矩陣被標以Gj。則Gj矩陣對-9×3(m-2)矩陣的鏈接不管m如何均有秩4(通常,如果Gj矩陣是獨立的,鏈接本該是較小維次,即當m≥5時為9)。
秩4約束意味著鏈接矩陣四個最大的主要元素表示視圖ψ1和ψ2之間的幾何結構在某種程度上為靜態(tài)最佳狀態(tài)。A.應用1圖象變換例如二個視圖帶有對應點pi,pi′,i=1,…n,希望生成此同一對象的新的視圖。已知張量aijk,將pi,pi′值插入三線性公式以提取x″,y″的值,而不管獲得αijk的方式。
例如只要知道7點的pi″(如i=1…7)的位置就可得到張量αijk。然后對于各個第8點就能由p,p′對和此張量來求得p″。B.應用2再現(xiàn)三視圖的張量或m>3視圖的鏈接矩陣的四個最大的基本元素(見段II)可被用來恢復二視圖之間的表射偏振幾何關系,并由此被用來再現(xiàn)景象的3D模型。
假定Ej=αij為3個3×3矩陣,亦即Ej=α1,j,1,α1,j,2,…α3,j,3。這一將27數(shù)字陣列變成為三個矩陣的特定置換將產生下列結果此三矩陣E1、E2、E3為與3D空間中某三個平面相關連的投影變換(單應性矩陣)。
這就是說,存在有空間中這樣的三個平面πj,即如果p與π1(例如)為共面的而p,p′為第一2視圖中的圖象位置,則E1p≈p′。對j=2,3也同樣。
第一二視圖間的“基本矩陣”F(或攝影測量文獻中所采用的“共面性約束”)滿足EjTF+FTEj=0 j=1,2,3一個用于求解F而提供線性系統(tǒng)等式的方程。
同樣,m>3的鏈接矩陣的四個最大基本元素(第II部分)可被用于如下面所述求解F。假定Ak(k=1…4)為此鏈接矩陣的四個最大基本元素,每一個被安排在一3×3矩陣中(行向)。則AkTF+FTAk=0]]>k=1,2,3,4這提供由m>3視圖線性求取F的靜態(tài)最佳方法。
“表射偏振”點v′可由方程FTv′=0或直接由張量如下這樣求取三個矩陣E1、E2、E3中的每二個矩陣的相應列的交叉乘積提供一表射偏振線,即一與v′相一致的線。同樣,如果以a1、a2、a3標示一個E矩陣的列和以b1、b2、b3標示另一E矩陣的列,則ai×bj-bj×aj即為一表射偏振線(i≠j)。綜合張量即得到18個其交點定義表射偏振v′的表射偏程線。此交點可采用例如最小二乘方法來求得。
同樣,此表射偏振點v′可如下述由A1…A4,四個最大基本元素鏈接矩陣來求取。假定a1、a2、a3為矩陣A1的列,b1、b2、b3為A2的列,則ai×bj-bj×aj為一表射偏振線,i≠j,而ai×bi提供另一組的三表射偏振線。由這樣來選擇四個矩陣A1…A4中的二個,就得到提供為解v′的冗余等式組的24個表射偏程線。
此3D景物的投影模型遵循F,而v′(例如3×4矩陣[(v′)F,v′])是由第二視圖的3D座標到圖象座標的攝象機變換。換句話說,對第一和第二視圖各自的每一對匹配點p,p′均具有p′≅[v′]Fp+kv′,]]>這樣,座標向量[x,y,l,k]即提供一景象的3D(投影)模型。
注1置換αi…也生成三個其他平面的三個單應性矩陣W1,W2,W3。單應性矩陣由最先的二第三視圖得到,即對于來自與W1相關的平面共面的P的p,p″的W1p≈p″。從而與矩陣E1、E2、E3的應用相似,能獲取與第一和第三視圖之間的表射偏振幾何條件相關的基本矩陣F″和表射偏振點v″。實現(xiàn)跨越3視圖的圖象的對應性。
由2D成象來處理3D景象中的一個重要步驟是就近取得跨越視圖的可靠的(僅可能密集的)匹配點組?,F(xiàn)有技術的當前狀態(tài)是采用二視圖的圖象灰度間的相關技術連同幾何圖形信息,如表射偏振幾何結構。
采用張量可以將一致性方法延伸來同時利用三個視圖而無須假定攝象機定標。給定一組初始的跨越三個視圖的對應點就得到此三線性張量。然后,此三線性張量提供用于采用相關方法來準確地定位匹配點的制約。這可按如下完成。
假定E1、E2、E3標明張量的設置a.j.和W1、W2、W3標明張量的設置ai..。首先將所有三個圖象對準使得匹配點之間的位移僅僅只沿著表射偏振線。這按如下來完成。
假定E=∑jpjEj,這里系數(shù)pj為對第一和第二圖象中各自的所有初始匹配點pk,pk′的線性最小二乘方條件Epk≈pk′的解。同樣,假定W=∑iμiWi,這里系數(shù)μi為對第一和第三圖象中各自的所有初始匹配點pk、pk″的線性最小二乘方條件Wpk≈pk″的解。以變換E-1“變形”圖象二和以變換W-1“變形”圖象三的處理產生二個標以2′和3′的新圖象,從而使得圖象1,2′間的匹配點沿著表射偏振線,圖象1,3′間的匹配點沿著表射偏振線。
表射偏振線可由張量推導得,如這里所介紹的(優(yōu)選實施例的詳細說明中的節(jié)IIB)。假定W′和W″分別為1,2′和1,3′之間的表射偏振線的方向向量。因此,如果p=(x,y),p′=(x′,y′),p″=(x″,y″)分別為圖象1,2′,3′中的匹配點,則對于某些系數(shù)α,β,p′=p+αW′及p″=βW″。應指出,W′、W″、α、β為隨位置(x,y)改變的量。
這里表明的三線性等式(3)-(6)提供對系數(shù)α、β的幾何條件約束,亦即對α的每一任意值,β值即被唯一地確定,或反之。為了取得α,β兩者,如下所述利用1,2′,3′的圖象亮度。
系數(shù)α,β滿足“恒定亮度方程”α(Ix,Iy)Tω′+It12′=0]]>β(Ix,Iy)Tω″+It13′=0]]>這里(Ix,Iy)是第一圖象中位置p=(x,y)處的梯度向量,It12′是圖象1,2′間的時間導數(shù),和It13′為圖象1,3′的時間導數(shù)(所有導數(shù)均為離散近似)。由這里提出的三線性方程(3)-(6)可得到f(α,β)=0,這里函數(shù)f( )的系數(shù)為張量的基元。由此而取得對α和β的最小二乘方解,滿足幾何條件和光度測定雙方的約束。
此整個的過程可按拉普拉斯金字塔(Laplacian Pyramid)分層次地進行,如J.R.Bergen和R Hingorani的“基于運動的層次幀速率變換”(Technical report,David Sarnoff Research Center,1990)中所描述的。
現(xiàn)在參看圖6,它是按照本發(fā)明一優(yōu)選實施例構造和運行的3D景象重現(xiàn)設備的簡化功能方框圖,此設備的運行是由一3D景象的至少三個視圖產生此3D景象的3D表示。
圖6的設備包含為由至少3個相應的觀察點提供一3D景象、即對象的至少3個相應的觀察點提供一3D景物、即對象的至少3個數(shù)字圖象的設備,例如一由3個不同觀察點運行的CCD攝象機10,或者如一可以是機載的電影攝影機20結合一象Zeiss PS-1那樣的用來作將由電影攝影機20所產生的圖象數(shù)字化運行的掃描器30。
此至少3個數(shù)字視圖被饋送到匹配點搜索器40,它由此3個數(shù)字視圖識別至少7個而最好是多個匹配點的三組值。來自不同的視圖的“匹配點”為對應于真實的3D世界中一單個位置的點(地點位置)。這些點例如說可以是作人工識別的。對于航空攝影可以采用市場供應的匹配點軟件,例如執(zhí)行相應功能的Inpho(Stuttgart)提供的Match-T程序包。
求取匹配點的普通方法在Wang,H.和Brady,J.M.的“棱角檢測一些新的結果”(IEEE colloquium Digest of System Aspects of Machine Perception and vision”,Londone 1992,pp.1.1-1.4)中有介紹。
三線性張量計算單元50接收此匹配點三值組并計算表示三個視圖之間的幾何參數(shù)關系的三線性張量。
然后此三線性張量被用來產生3D景象的3D表示。按照本發(fā)明一實施例,此三線性張量由一表射偏振幾何關系生成單元60利用來計算此三視圖中二個的表射偏振幾何表述。接著,3D表示產生單元70按單元60輸出的表射偏振表述產生景象、即對象的3D表示,如下述文獻中詳細描述的a.Fangeras,O.D.“利用未作標定的立體設備能在三維空間看到什么?”,Proceedings of the EuropeanConfernce on computer vision,pp.563-578,Santa Margherita Ligure,Italy,June 1992。
b.Hartley,R.等“由未作標定的攝象機得的立體效果”,Proceedings IEEE Conf.on Computer Vision and Pattern Recognition,761-764,Champaign,IL,June 1992。
c.Shashua,A.“由未標定圖象得的投影結構由運動和識別得的結構”,IEEE Transactions on PAMI,16(8)778-790,1994。
單元50和60的優(yōu)選實現(xiàn)方案在附錄A中以“C”計算機語言加以描述。單元50的優(yōu)選實現(xiàn)方案由附錄A的P1直至P4末尾中說明。單元60的優(yōu)選實現(xiàn)方案則在附錄A中由P4末尾到P8中部說明。有助于理解上述材料的子程序和統(tǒng)計過程列于附錄A的P8以下。
包含有表示3D景象、即對象的至少一部分或一個方面的信息的3D表示可由一激光計算機打印機用來產生該對象(景象)的一新的視圖。或者,通常的CAD(計算機輔助設計)軟件與普通繪圖機相結合也可被用來產生對象(景象)的新的視圖。CAD軟件還可在質量保障應用中用于比較2個CAD文件。
現(xiàn)在來參看圖7說明一優(yōu)選3D景象再現(xiàn)方法的簡化流程圖,按照本發(fā)明一優(yōu)選實施例運行的這一方法有助于與圖6的設備相結合。圖7總體上是足以說明自身的。如果景象(對象)的3個視圖是由一數(shù)字案卷取得或者是由例如一數(shù)字攝象機產生的,它們就可以是數(shù)字式的。如果它們不是數(shù)字的,就可對它們進行掃描或者進行數(shù)字化。
任何合適的一般的或其他格式均可被采用。例如Silicon Graphics′s Inventor格式一開始就可被用于3D表示。此Inventor格式可被變換成Postsript以便打印3D表示的一新視圖。
如所示,景象的3D表示可用于進行廣泛范圍的活動中,例如景象、即對象的3D測量,如由打印輸出來生成景象(對象)的新視圖,和質量保證比較,后者是將所生成的對象(景象)的3D表示利用一普通方法與所希的對象(景象)或其所希望的3D表示進行比較。
現(xiàn)在參看按照本發(fā)明一優(yōu)選實施例構成和運行的圖象變換設備的簡化功能方框圖的圖8,該設備作由一3D景象的至少二參考視圖生成此3D景象的新視圖的運行。圖8的設備與圖6的設備類似。但圖8中一3D景象的新視圖是直接僅由其至少二個參考視圖產生的,最好無需中間產生一3D表示。
在圖8中,有關此二參考視圖和所希望的新視圖的幾何信息被用來產生表示三個視圖之間的幾何關系的三線性張量。一般,可例如人工地識別此新視圖中至少7個三值組的位置,分別對應于至少二參考視圖的每一個中的7個位置。通常至少某些有關此新視圖的信息是可利用的。例如,如果希望根據(jù)相同地區(qū)的至少二新的基礎視圖更新一GIS(地理信息系統(tǒng))的年前的視圖的話。一般可能識別對應于該二個參考視圖中的7個位置并被認為依然存在于此年前視圖的即將被產生的當前型式中的此年前視圖中的至少7個位置。
此新視圖一般由根據(jù)所述第一和第二參考視圖中的第一和第二相應位置和所述三線性張量分別計算多個各自對應于不同的所述第一和第二相應位置的新視圖位置來產生。例如,匹配點搜索器140可由此二參考視圖產生多對的匹配點,例如說1000對。對于最先的7對,用戶可人工地指明此新型視圖中的7個匹配點。
一旦由三線性張量計算單元150生成三線性張量后,就可將匹配點對8-1000的座標插入此三線性張量,如圖9中所示,以便生成此新視圖中的匹配點8-1000的座標。
這樣生成的新視圖可被例如與一年前的同一視圖進行比較,來辨別這一年的過程內該景象中所發(fā)生的差異。
現(xiàn)在參看說明按照本發(fā)明一優(yōu)選實施例運行的優(yōu)選圖象變換方法的簡化流程的圖9,此方法可用于與圖8的設備相結合。圖9通常是自說明性的。
在這里所介紹的任一實施例中,如果提供有多于3個的視圖,可對每三個視圖計算“中間”張量。然后可根據(jù)這些“中間”張量間的關系計算一具有代表性的張量。
圖10為圖2中也曾作圖解的鞋的3D再現(xiàn)的圖示。圖10是由求得匹配點和再現(xiàn)它們的3D位置所生成的。接著將座標用CAD軟件處理來生成圖10中所示的表面。
圖11為說明作工作質量保證的優(yōu)選方法和設備的簡化方框圖。圖11包含一3CCD攝象機210的陣列200,這些攝象機均對準一單個位置由此來生成該位置的三個透視圖。這些攝象機被裝附到一機器人臂212,因而能按照來自控制器224的適當指令作相對于沿著傳送帶220到達的工件214的運動。
當一工件進入CCD攝象機210的視野時,傳送帶通常會作暫停來使得基本上整個的工件表面區(qū)域均能由攝象機210成象。控制器224通過機器人臂212圍繞對象移動攝象機陣列200,以使得一般幾乎整個表面區(qū)域均被成象。例如可將攝象機陣列200圍繞對象移動通過10個不同的位置,而在每一個位置3個CCD攝象機中的每一個均對工件攝象。所采用位置的數(shù)量取決于工件的復雜性。
這一過程由三個相應透視圖生成多個三值組圖象,每一三值組圖象包含有該工件同一部分的三個數(shù)字圖象。對各個圖象三值組,可根據(jù)已知的機器人臂的位置和采用手-眼定標來計算陣列200的和每一攝象機210的對應位置。
各圖象三值組由可能類似于圖6的單元40、50、60、70和90的單元240、250、260、270和290分別進行處理。
由CAD S/W290按各個圖象三值組(各取樣位置)所產生的CAD模型信息被存貯在適當?shù)拇尜A器300中。一計算單元310用來將多個對應于多個CCD攝象機陣列200的位置的取樣地點匯集進一單一的座標系統(tǒng)。所需的座標變換由將確定CCD攝象機陣列的運動的反變換來進行計算。
計算單元320將單元310的輸出與一參考CAD模型進行比較計算其間的差。這些差在計算單元330中與可接受的容差相比較。
圖11的設備也適應于作反向工程或CAD(計算機輔助設計)中的3D數(shù)字化應用。
圖12為說明為生成數(shù)字地形圖的優(yōu)選方法和設備的簡化方框圖,例如為了更新都市地圖,為檢查非法建筑,為提供汽車導航系統(tǒng)服務,或者甚至為制作諸如集成電路等的微觀對象的圖形。
機載CCD攝象機334飛行越過希望對其產生數(shù)字地形圖的景象。此攝象機334由三個相應的透視圖來生成此景象的3個數(shù)字圖象。此3個圖象由可能類似于圖6的單元40、50、60和70的340、350、360和370進行處理。
由一表面插補單元380對3D顯示生成單元370的輸出進行一表面插補處置。一適宜的表面插補方法在Grimson,W.E.L.的“視覺表面插補的計算理論”(Proc of the Royal Soc.of London B.298,pp.395-427,1982)中有介紹。
最后由一正射照片生成單元390從表面插補單元380的輸出去除透視失真,而得到一正射象片(平面地物圖)。單元390的適當?shù)倪\行方法在Slama,C.C.的“攝影測繪手則”(Amercan Society ofPhotogrammetry,1980)中有描述。
本發(fā)明還有助于作3D對象的顯現(xiàn),特別是對于娛樂、動畫或教育上的應用。象圖11的陣列200那樣的攝象機陳列圍繞一待加以顯現(xiàn)的對象旋轉而基本上將希望顯示給用戶的整個表面區(qū)域成象。例如攝象機可在圍繞該對象的200個位置的每一個處對該對象成象。
于是可生成不是上述200個位置處的合成圖象。用戶可利用遙控操縱桿來指明所希望的位置。本發(fā)明的設備可被用來為該位置生成一合成圖象。
普通的駕駛模擬游戲采用合成背景,但本發(fā)明可被用來提供帶有真實背景的駕駛模擬游戲。為此,使至少3個最好5-10個攝象機的陣列在所希望的景象中運動以使得此攝象機陣列能由至少3個而最好更多些的不同透視圖俘獲基本上整個的景象。例如,此景象可由攝象機陣列的接近1000個位置中的每一個來俘獲。然后按照本發(fā)明產生新的視圖來適應用戶例如以一控制桿指明新視圖的需要。
現(xiàn)在根據(jù)一篇將在《IEEE,Transactions on PAMI》上公開的標題為“用于識別的代數(shù)函數(shù)”的文獻說明有助于識別的代數(shù)函數(shù)。
用于識別的代數(shù)函數(shù)I.導言建立有關一3D景象的三個透視圖之間的代數(shù)關系的通常結果和論證其通過對準對視覺識別的應用。一般表明,一景象的任何三個透視圖能滿足圖象座標的一對三線性函數(shù)。在極限情況中,當所有三個視圖均為正射的是,這些函數(shù)就成為線性的并減化到[38]所揭示的形式。利用此三線性結果就可處理一對象的視圖(例如由二模型視圖生成新視圖)而無需恢復景象結構(量度的或非量度的),攝象機變換,或者甚至表射偏振幾何參數(shù)。而且,三線性函數(shù)可依靠線性方法7點的最小結構來求取。后者被證明是為對將一3D景象重新投影到對應于二參考視圖之間的點的給定的任一新視圖上的問題的通用線性解所需的最小結構上的新的下邊界。前面的解依靠恢復表射偏振幾何參數(shù),這又需要對一線性解的8點的最小結構。
中心結果包含在Theorem(定理)1、2和3中。第一定理說明,由未標定的針孔攝象機得到的一固定的3D對象的各種視圖ψ滿足分類關系F(ψ,ψ1,ψ2)=0,其中ψ1、ψ2為對象的二個任意視圖,F(xiàn)具有一特殊的三線性形式。F的系數(shù)可線性地求得無須首先建立對象或攝象機運動的表射偏振幾何關系的3D結構。為證明Theoreml所需的輔助定理可能自身是重要的,因為它們建立平面投影變換間的某些規(guī)則并導入新的視圖不變量(Lemma4)。
Theorem2針對以最經濟的方式獲取三線性函數(shù)的系數(shù)的問題。已表明在三個視圖之間的所有可能的三線性函數(shù)中,最多存在四個線性獨立的這種函數(shù)。結果,這些函數(shù)的系數(shù)可由三個視圖之間的7個對應點線性地得到。
Theorem3是Theorem1顯然的推論但含有重大的實用特性。已表明如果由并行投影得到視圖ψ1、ψ2,則F簡化到一特殊的雙線性形式,或者相當?shù)?,任何透視圖ψ都可由二正射視圖的有理線性函數(shù)得到。簡化到雙線性形式意味著如果被存貯在存貯器中的二參考視圖(模型視圖)為正射的就有可能采用較簡單的識別方法。
這些結果可能有數(shù)個應用(在節(jié)VI中討論),但在整個這一說明中著重的一個是用于通過配準作3D對象的識別任務。作識別的配準方法([37,16]及其中的參考文獻)是依據(jù)這樣的結果,即經受3D剛性仿射或投影變換的對象的同樣等級的視圖(不計自身的閉塞)的俘獲可借助存貯對象的3D模型,或者僅僅依靠存貯對象的至少二任意的“模型”視圖一假定模型視圖的對應問題可在一定程度上得到解決(參看[27,5,33])。識別期間,新輸入視圖與一特定候選對象的模型視圖之間少量的對應點就足以將模型“再投影”到新觀察位置上。如此被再投影的圖象成功地與輸入圖象匹配即完成識別。這種利用有限數(shù)量的對應點由一組模型視圖預測一新視圖的問題被稱之為再投影。
此再投影問題原則上可通過形狀和攝象機運動的3D重現(xiàn)來處理。這包含為求取剛性攝象機運動參數(shù)和量度形狀由運動方法得的經典結構[36,18,35,14,15]和為求取非量度結構的較近代的方法,即假定對象經受3D仿射或投影變換,或同等地,攝象機未經標定[17,25,39,10,13,30]。用于透視圖的經典方法在圖象測量中的誤差情況,窄的視野,和內部攝象機標定方面不穩(wěn)定是已經公知的[3,9,12],因此,對于再投影的目的多半未得到實際上的應用??傮w觀念上的非量度方法還沒有對真實圖象作完全的測試,但到目前為止所建議的方法依賴于首先求取表射偏振幾何參數(shù)-一當存在噪聲時其不穩(wěn)定也是公知的過程。
也已看到,表射偏振幾何參數(shù)獨自就足以依靠表射偏振線的相交[24,6,8,26,23,11]利用三視圖之間的至少8個對應點來實現(xiàn)再投影。但這只有在三攝象機的中心是非共線的-除非這些中心遠不是雙線性否則會導致數(shù)量的不穩(wěn)定性-才可能,而且三焦點平面上的任一對象點也不能被再投影。而且,在采用非量度再現(xiàn)方法時,獲得表射偏振幾何參數(shù)即使在利用數(shù)十個對應點而在現(xiàn)有技術方法的狀態(tài)下充其量也不過是一靈敏的過程(見第V的詳述和以模擬的與真實的圖象進行的比較分析)。
因此,為了穩(wěn)定目的,值得進行探索為實現(xiàn)再投影的更直接的手段。例如,替代形狀和不變量的再現(xiàn),可以建立單獨以圖象座標的函數(shù)表示的視圖之間的直接關聯(lián),稱之為“視圖的代數(shù)函數(shù)”。[38]已得到正射情況下的這樣的結果。它表明一對象的任意三個正射視圖滿足對應圖象座標的線性函數(shù)-在此將僅表明更大組的代數(shù)函數(shù)的限制情況,它們一般均具有三線性形式。利用這些函數(shù)就可以處理對象的視圖,例如生成新的視圖,而無需作為中間步驟獲取形狀或攝象機幾何參數(shù),全部需要做的只是適當?shù)亟M合二參考視圖的圖象座標。而且,采用這些函數(shù),表射幾何參數(shù)被纏繞在一起,不僅使得沒有奇異性和點的最小組構上的下邊界,而且在實驗章節(jié)中還可看到圖象測繪中存在差錯時的更正確的性能。這一部分的成果(僅Theorem1)簡要地在[31]作了介紹。
II.符號標記現(xiàn)考慮三維投影空間P3的對象空間和二維投影空間P2的圖象空間。設P3為一組代表3D對象的點,和ψiP2表示以i作下標的的視圖(隨意的)。假定二攝象機其中心分別位于O,O′∈P3,表射偏振極即被定義為在線OO′與二圖象平面的交點。因為圖象平面是有限的,所以能不致喪失普遍性地給每一觀測的圖象點指派值1作為第三齊座標。就是說,如果(x,y)為某點的被觀測的圖象座標(相對于某一隨意的原點-例如說圖象的幾何中心),則P=(x,y,1)就是指此圖象平面的齊性座標。應指出,這一約定忽略掉其中內的點在這些視圖中是無限的那些特殊的視圖-這些奇異情況這里未加模擬。
由于這里將以最多每次三個視圖討論,所以相關的表射偏振極作如下指定假定v∈ψ1和v′∈ψ2為視圖ψ1、ψ2之間的對應表射偏振極,假定v∈ψ1和v″∈ψ3為視圖ψ1、ψ3之間的對應偏振極。同樣,三個視圖之間的對應圖象點將被指定為P=(x,y,1),P′=(x′,y′,1)和P″=(x″,y″,1)。術語“圖象座標”將是指P2的非齊性座標表示,例如用于三個對應點的(x,y),(x′,y′),(x″,y″)。
平面以πi表示并加以下標i,而如果僅討論一個平面就是π。所有平面都被認為是隨意的并且相互區(qū)分。符號≈是指明按比例相等,GLn代表n×n的矩陣組,和PGLn是按比例定義的組。
III.三線性公式這一說明書的中心結果在以下二定理中表明。本章其余部分用于證明這一結果及其蘊涵。
Theorem1(Trilinearity,三線性)假定ψ1、ψ2、ψ3為以一組3D中的點模擬的某一對象的三個隨意的透視圖。三個視圖之間的三個對應點的圖象座標(x,y)∈ψ1,(x′,y′)∈ψ2和(x″,y″)∈ψ3滿足一對以下形式的三線性方程x″(α1x+α2y+α3)+x″x′(α4x+α5y+α6)+x′(c7x+α8y+α9)+α10x+α11y+α12=0,和y″(β1x+β2y+β3)+y″x′(β4x+β5y+β6)+x′(β7x+β8y+β9)+β10x+β11y+β12=0,式中系數(shù)αj,βj,j=1,……12,對所有點均為固定的,被按整個比例唯一地確定,和αj=βj,j=1,……6。
下面的輔助定理被用作證明的一部分。
Lemmal(Auxiliary-Existence,輔助-存在)假定A∈PGL3為因某平面π產生的投影映射(單應性)ψ1→ψ2。假定A被定標得滿足Po′≈APo+v′,其中Po∈ψ1和P′o∈ψ2為來自一隨意的點Po
的對應點。這樣,對于來自隨意點P∈P3的對應點對P∈ψ1和P′∈ψ2,即具有p′≅Ap+kv′]]>系數(shù)K與ψ2無關,亦即對第二視圖的選擇是不變量。
此定理、其證明及理論和實際的涵義在[28,32]中有詳細討論。應指出,在單應性A是仿射的和表射偏振v′是在無窮遠的線上時的特定情況,對應于由二正射視圖來的仿射結構的構成[17]。概括地說,P3的表述Ro(座標四元組)可總被選擇得使一隨意平面π為無窮遠處的平面。這樣,一總體未定標攝象機運動產生能由仿射組的元件表明為與Ro相關的表述R。因此,標量K是一投射框架中的仿射不變量,并被叫做相對仿射不變量。二個這種不變量各自對應一不同的參考平面之比就是投影不變量[32]。在此無需討論取得K的方法,所有需要作的只是應用已存在的與某參考平面相關連的相對仿射不變量K,其進而導致正射A。
Definition(定義)1,因同一平面π產生的由ψ1→ψ1單應性Ai∈PGL3被說成是標定兼容的,如果它們被定標得滿足Lemma1的話,亦即,對于任何投影到P∈ψ1和P′∈ψi上的點P∈均存在一標量K,它對任何視圖ψi滿足p′≅Aip+kvi,]]>其中vi∈ψ1是帶有ψ1的表射偏振極(隨意標定的)。Lemma2(Auxiliary-Unqueness,輔助-單值性)假定A,A′∈PGL3分別為因平面π1、π2產生的二ψ1→ψ2的單應性,則存在一標量S,它滿足等式A-sA′=[αv′,βv′,γv′],對于某一系數(shù)α,β,γ。
證明假定q∈ψ1為第一視圖中的任一點。存在有一標量Sq,它滿足v′≈Aq-SqAq。令H=A-SqA′,即得到Hq≈v′。但如[29]中證明的,對于因任一平面引起的任何單應性ψ1→ψ2,Av≈v′。因此也存在Hv≈v′。僅在H為因經由平面(與投影中心O共面)產生的單應性時才會發(fā)生二分開的點q、v映射在同一點v″上,這樣,對于所有p∈ψ1Hp≈v′,Sq為一固定的標量S,。后者也就意味著H為一其列為v′的倍數(shù)的矩陣。Lemma3(Auxiliary for Lemma4,對Lemma4的輔助)假定A,A′∈PGL3分別是因不同平面π1、π2引起的由ψ1→ψ2的單應性,和β,β′∈PGL3分別為因不同平面π1、π2引起的由ψ1→ψ3的單應性。則對某些T∈PGL3,A′=AT,和B=BCTC-1,其中Cv≈v。證明假定A=A2-1A1,其中A1、A2分別為由ψ1ψ2到π1上的單應性。同樣,B=B2-1B1,其中B1、B2分別為由ψ1、ψ3到π1上的單應性。假定A1v=(c1、c2、c3)T和假定C≈A1-1diag(c1、c2、c3)A1。則B1≈A1C-1,這樣得到B≈B-12A1C-1。應指出,A1與B1之間的差是因表射偏振極v,v的不同位置引起的,它由C(Cv≈v)補償。假定E1∈PGL3為由ψ1到π的單應性,和E2∈PGL3為由π2到π1的單應性。則利用正常的定標E1和E2,得到A′=A2-1E2E1=AA1-1E2E1=AT,]]>和用正常的定標C,得到B′=B2-1E2E1C-1=BCA1-1E2E1C-1=BCTC-1]]>Lemma4(Auxiliary-Uniqueness)、對定標兼容的單位性,Lemma2的標量s、α、β、γ為由ψ1、π1、π2指明的不變量。即就是,給定一隨意的第三視圖ψ3,假定B,B′分別為因π1、π2生成的由ψ1→ψ3的單應性。假定B為與A定標相兼容的,B′為與A′定標相兼容的。則,B-sB′=[αv″,βv″,γv″]。證明首先證明s為一不變量,亦即,B-sB′為其列為v″的倍數(shù)的矩陣。按Lemma2和Lemma3存在有一其列為v′的倍數(shù)的矩陣H,一滿足A′=AT的矩陣T,和一使得I-sT=A-1H的標量s。在兩邊乘以BC之后,和再予乘以C-1,就得到B-sBCTC-1=BCA-1HC-1按Lemma3有B′=BCTC-1。矩陣A-1H具有列為v的倍數(shù)的列(因為A-1v′≈v),CA-1I是一其列為v的倍數(shù)的矩陣,和BCA-1H是其列為v″的倍數(shù)的矩陣。將BCA-1H乘以C-1并不改變其形式因為BCA-1HC-1的每一列僅只是BCA-1H的列的線性組合。結果,B-SB′就是一其列為v″的倍數(shù)的矩陣。
假定H=A-sA′和H=B-sB′。由于單應性是定標兼容的,按Lemma1,存在有與一隨意的P∈ψ1相關的不變量K、K′,其中K是因π1產生的,K′是因π2產生的p′≈Ap+Kv′≈A′p+K′v′和p″≈Bp+Kv″≈B′p+k′v″。而按Lemma2具有Hp=(sk′-k)v′和Hp=(sk′-k)v″。由于p是隨意的,這僅有在H中的v′的倍數(shù)的系數(shù)與H中的v″的倍數(shù)的系數(shù)相一致時才會發(fā)生。Proof of Theorem(定理的證明)Lemma1提供定理的存在部分,如下述。由于Lemma1適用于任何平面,選擇平面π1并假定A、B分別為定標兼容的單應性→ψ2和ψ1→ψ3。則對每一點P∈ψ1在對應點為p′∈ψ2和p″∈ψ3時,存在有滿足p′≈Ap+Kv′和p″≈Bp+kv″的標量k。可由二式提取k并得到
其中b1、b2、b3和a1、a2、a3為A和B的行向量,v′=(v1′,v2″,v3′),v″=(v1″,v2″,v3″)。因為k的不變性,可使(1)的項與(2)的項相等以得到三視圖之間圖象座標的三線性函數(shù)。例如,使各等式中的起始二項相等就得到x″(v1′b3-v3″a1)Tp-x″x′(v3′b3-v3″a3)Tp+]]>x′(v3′b1-v1″a3)Tp-(v1′b1-v1″a1)Tp=0,----(3)]]>以同樣方式,以使(1)的第一項與(2)的第二項相等之后得到y(tǒng)″(v1′b3-v3″a1)Tp-y″x′(v3′b3-v3″a3)Tp+]]>x′(v3′b3-v2″a3)Tp-(v1′b2-v2″a1)Tp=0.----(4)]]>此二式均為所希望的形式,其最初的六個系數(shù)在二等式中相同。
因為Lemma1適用于任何平面而出現(xiàn)唯一性問題。如果選擇一帶單應性A′、B′的不同平面,例如說π2,則必須證明新的單應性導致相同的系數(shù)(按整個比例)。(3)和(4)中括號內的項對某些i和j具有通用形式vi′bj-vj″ai。因而需要證明存在有一標量S能滿足vj″(ai-sai′)=vi′(bj-sbj′)]]>但這是由Lemma2和4直接得出的。
此定理的直接蘊涵是僅由組合二模型視圖(ψ1,ψ2)即可得到一新視圖(ψ3)。組合系數(shù)αj和βj可一起作為一給定三視圖之間的9個對應點的17個方程(24-6-1)的線性系統(tǒng)的解來求得(多于9個的點可被用于一最小二乘方解)。
在下一定理中得到為求解此二線性函數(shù)的系數(shù)所需點的數(shù)量的下邊界。Theorem1證明的實體部分指明存在有該型式的9個三線性函數(shù),其系數(shù)具有通用形式v1′bj-vj″ai。這樣最多就有27個不同的系數(shù)(按統(tǒng)一的比例),并因此如果此9個三線性函數(shù)中的多于二個為線性獨立的,就可利用少于9個的點來求解該系數(shù)。下一定理表明最多4個三線性函數(shù)為線性獨立的,并因而7個點即足以求解系數(shù)。
Theorem2存在有Theorem1中所述類型的9個不同的三線性形式,其中最多4個是線性獨立的。此4個三線性形式的系數(shù)可利用三視圖之間的7個對應點求得。
證明9個三線性形式的存在直接由(1)和(2)得到。假定αij=vi′bj-vj″ai。9個形式如下(最先的2個為了方便是(3)和(4)的重復)x″α13Tp-x″x′α33Tp+x′α31Tp-α11Tp=0,]]>y″α13Tp-y″x′α33Tp+x′α32Tp-α12Tp=0,]]>x″α23Tp-x″y′α33Tp+y′α31Tp-α21Tp=0.----(5)]]>y″α23Tρ-y″y′α33Tp+y′α32Tp-α22Tp=0.----(6)]]>y″x′α31Tp-x″x′α32Tp+x″α12Tp-y″α11Tp=0.----(7)]]>y″y′α31Tp-x″y′α32Tp+x″α22Tp-y″α21Tp=0,----(8)]]>x″y′α13Tp-x″x′α23Tp+x′α21Tp-y′α11Tp=0,----(9)]]>y″y′α13Tp-y″x′α23Tp+x′α22Tp-y′α12Tp=0,----(10)]]>x″y′α12Tp-x″x′α22Tp+y″x′α21Tp-y″y′α11Tp=0,----(11)]]>對于一給定的三值組p,p′,p″,表上的最先4個函數(shù)產生一4×27矩陣。此矩陣的階為4因為它含有4個正交列(與α11,α12,α21和α22相關連的列),因此這些函數(shù)是線性獨立的。由于具有27個系數(shù),每一三值組p,p′,p″用于4個線性方程,這樣三視圖間的7個對應點即提供為線性求解系數(shù)的足夠數(shù)量的方程(只要系統(tǒng)按一公共比例確定,7個點就產生能被用作一致性檢查或用于得到最小二乘方解的二個附加的方程)。
其余的三線性形式是最先4個的線性擴展,如下
(7)=y(tǒng)″(3)-x″(4)(8)=y(tǒng)″(5)-x″(6)(9)=y(tǒng)′(3)-x′(5)(10)=y(tǒng)′(4)-x′(6)(11)=y(tǒng)″y′(3)-x″y′(4)+x″x′(6)-y″x′(5)其中括號內的數(shù)表示各不同三線性函數(shù)的量程數(shù)。
共同地二定理為在給定二模型視圖間的對應性p,p′求解一新視圖中的位置x″,y″提供積極的手段。這一產生新視圖的過程很容易完成而無需明確地了解結構、攝象機變換、或甚至表射偏振幾何參數(shù),而需要的對應點數(shù)量少于其他任一已知的方案。
對x″,y″的求解是唯一的,沒有對所容許的攝象機變換的約束。不過有些攝象機組構需要與Theorem2的證明中所建議的不同的一組4個三線性函數(shù)。例如方程(5)、(6)、(9)和(10)組也是線性獨立的。這樣,如果v′1和v3′同時成為0,即v′≈(0,1,0),則該組即可被代之以應用。同樣,方程(3),(4),(9)和(10)為線性獨立的,而在v≈(1,0,0)時應被加以應用。v″≈(1,0,0)和v″≈(0,1,0)時亦產生類似情況,可由上述討論的6個函數(shù)中選擇4個作為適當?shù)囊罁?jù)來進行處理。應指出,這里沒有涉及7點的奇異組構問題。例如很顯然,如果此7點是共面的,則它們在三個視圖間的對應性也許就不能為求取系數(shù)而產生唯一解。奇異表面的實質已就為尋求表射偏振幾何參數(shù)所需的8點的情況進行了研究[19,14,22]。有關本文所提供的結果的同一實質是一未解決的問題。
消除對獲取表射偏振幾何參數(shù)的需要帶來明顯和巨大的優(yōu)點。為更好理解這些優(yōu)點,現(xiàn)在來粗略地考慮采用表射偏振幾何參數(shù)作再投影的過程。表射偏振交叉方法可作如下的扼要說明(見[11])。假定F13和F23為滿足p″F13p=0和p″F23p′=0的矩陣(當前詞匯中“基本″矩陣[10])。則由p″與其表射偏振線的關聯(lián)而得到p″≅F13p×F23p′.]]>因此,三個視圖間的8個對應點就是以為二基本矩陣作線性求解,而后所有其他對象點均能再投影到第三視圖上。等式(12)也為三線性形式,但不是Theorem1中引入的類型。不同點包含有(i)表射偏振交叉需要來自8點而不是7點的對應;(ii)p″的位置由一其在三攝象機中心共線的情況下是奇異的線交叉過程來求解;在三線性結果中p″的成份被分開求解而三個共線攝象機的情況是允許的;(iii)此表射偏振交叉過程是可分解的,即每次只用二個視圖,而表射偏振幾何參數(shù)在三線性結果中則是纏結在一起的不能獨立獲取。后者還意味著在存在噪聲時的一種較好的數(shù)字運行方法,如下面將表明的,即使采用最小數(shù)量的所需的點,其性能也遠遠超過采用多得多的點的表射偏振交叉的性能。換句話說,由于避免了獲取表射偏振幾何參數(shù)的需要而得到巨大的實際利益,因為在協(xié)同透視圖工作時表射偏振幾何參數(shù)是最易于發(fā)生差錯的組成部分。視圖三線性函數(shù)的通用結果與對正射視圖的“視圖的線性組合”結果[38]之間的關系可由將p2中A和B設定為仿射的和v3′=v3″=0很容易看到。例如,(3)化簡為v1′x″-v1″x′+(v1″a1-v1′b1)Tp=0,]]>這是一種α1x″+α2x′+α3x+α4y+α5=0.的形式。如在透視情況中那樣,每一點用于4個等式,但這里利用其中所有的4個來求取系數(shù)是不利的,因此可以僅利用4個等式中的二個和需要4個對應點來求取系數(shù)。這樣,在所有三個視圖均為正射的情況中,x″(y″)即被表明為一個二另外視圖的圖象座標的線性組合,如[38]中所揭示的。IV.雙線性形式現(xiàn)在考慮正射地取一對象的二參考(模型)視圖(采用一電視鏡頭將提供合理的近似性),在識別期間對象的任一透視圖均是容許時的情況。可容易地證明,三個視圖將通過雙線性函數(shù)(而不是三線性的)相關連Theorem3(Bilinearity,雙線性)在Theorem1的條件中,如果由并行投影得到視圖ψ1和ψ2,則一對Theorem1的三線性形式簡化成如下的一對雙線性方程x″(α1x+α2y+α3)+α4x″x′+α5x′+α6x+α7y+α8=0.和 y″(β1x+β2y+β3)+β4y″x′+β5x′+β6x+β7y+β8=0.其中αj=βj;j=1,…4。證明在這些條件下由Lemma1得到A為P2中仿射的和v3′=0,因此(3)簡化成x″(v1′b3-v3″a1)Tp+v3″x″x′-v1″x′+(v1″a1-v1′b1)Tp=0.]]>同樣,(4)簡化成y″(v1′b3-v3″a1)Tp+v3″y″x′-v2″x′+(v2″a1-v1′b2)Tp=0.]]>此二等式均是所希望的形式,其最先的4個系數(shù)在二等式間是相同的。
其余三線性形式均經過類似的簡化,而Theorem2仍然成立,即仍然有4個線性獨立的形式。結果得到21個按共同比例的系數(shù)(而不是27個)和每點的4個方程,從而5個對應點(而不是7個)就足夠用于作線性求解。
三視圖的雙線性函數(shù)較通常的三線性函數(shù)具有二個優(yōu)點。第一,如前面提到的,為求系數(shù)的解僅需要三視圖間的5個對應點(不是7個)。第二,代數(shù)函數(shù)的方次越低,測量對應性中求解將越不易于出現(xiàn)差錯。換句話說,很可能(雖然未必一定)較高階項如等式3中的項x″x′x將對系統(tǒng)的整體誤差敏感性的作用較大。
與認為所有視圖均是正射的情況相比較,這一情況更接近真實。由于僅只取模型視圖一次,所有要求采取特定方法、亦即采用電視鏡頭(假定處理對象識別而不是景象識別)就不是不合理的。如果滿足這種要求,則就是普通的識別任務,因為此時的識別處理期間可以取任何透視圖。V.試驗數(shù)據(jù)進行本節(jié)所描述的試驗是為了評估為再投影采用三線性結果與采用[38]的表射偏振交叉和線性組合結果相比較的實際作用(后者在這里僅表明了三線性結果的有限情況)。
節(jié)III中所述是由首先獲取基本矩陣來實現(xiàn)的表射偏振交叉方法。雖然8個對應點足以作線性求解,實踐中將采用多于8點來以線性的或非線性的二乘方方法求得基本矩陣。由于線性最小二乘方法仍然對圖象噪聲敏感,所以采用的是由T.Luong和L.Quan提供的[20]中描述的非線性實現(xiàn)方法(在[20]中建議有二種實現(xiàn)方法,是采用得到較佳結果的一種實現(xiàn)方式)。
第一個試驗采用的模擬數(shù)據(jù)表明,即使正確地求取得表射偏振幾何參數(shù),采用免除線交叉處理的三線性結果仍然要好得多。第二個試驗是對真實的圖象組進行的,比較了各種方法的性能和實際達到合理的再投影效果所需的對應點的數(shù)量。A.計算機模擬利用了一被隨機地置于Z軸座標在100單元至120單元和x,y軸座標隨意地從-125至+125的范圍內的46點的對象。焦點長為50單元和第一視圖由fx/z,fy/z得到。第二視圖(ψ2)是由圍繞點(0,0,100)利用軸(0.14,0.7,0.7)和由0.3弧度的角度旋轉所產生的。第三視圖(ψ3)是由圍繞軸(0,1,0)以同樣的變換和角度旋轉產生的。各種數(shù)量的隨機噪聲被作用到所有被再投影到第三視圖上的點,但不作用到8或7個被用于求取參數(shù)的點(基本矩陣,或三線性系數(shù))。噪聲被隨機地分開地加到各座標并帶有由0.5至2.5象素誤差的變化水平。進行了1000次如下的試驗生成20個隨機對象,對每一級誤差各個對象進行10次模擬。采集了最大再投影誤差(以象素為單位)和平均再投影誤差(被作再投影的所有點的平均)。由對所有試樣(它們中的200個)進行平均分別采集各個誤差級別的這些數(shù)字和記錄標準的偏離。由于沒有誤差被加到被用來確定表射偏振幾何參數(shù)和三線性系數(shù)的8或7個點,所以僅進行了為得到基本矩陣或三線性系數(shù)所需的有關的線性方程系統(tǒng)的求解。
結果示于圖1A-1B。右圖表示測量最大投影誤差得的各圖象噪聲水平的二種算法的性能。發(fā)現(xiàn)在所有的噪聲水平下,三線性方法明顯較佳而且還具有較小的標準偏離。對右邊圖中所示的平均再投影誤差也同樣。
性能中的這種差別是所預料的,因為三線性方法是一并考慮所有的三個視圖,而不是每對分別考慮,并因而避免了線交叉。B.對真實圖象的試驗圖2A-2C表示選擇來作試驗的對象的三個視圖。此對象為帶有為便于作對應性處理的附加結構的運動鞋。選取這一對象是因為其復雜性,即,它具有一自然對象的形狀和不易于作參數(shù)描述(如平面或代數(shù)表面的集合)。應指出,這里所說明的情形是挑戰(zhàn)性的因為被再投影的視圖不是在二模型視圖的中間,即應當預期到較之在中間情況對圖象噪聲更為敏感。人工地選擇了幀面中的一個ψ1上的一組34點,它們的對應物自動地在此試驗中所采用的所有其他幀面上得到。此對應過程是根據(jù)[7]中所描述的由粗到細的光流算法的執(zhí)行。為達到分開的視圖間的準確對應,采用了過渡的中間幀面和附加以連續(xù)幀面的位移。然后將全部位移場用來將第一幀面推(“翹曲”)向目的幀面這樣來生成一合成圖象。再次將光流作用到合成幀面與目的幀面之間并將最后得的位移加到早先得到的整個位移上。這一過程提供一密集的位移場,它隨后被采樣來獲得最初在第一幀面中所選擇的34點的對應物。這一過程的結果在圖2A-2C中以顯示中心圍繞所計算得的對應點位置的方塊來表示??梢钥吹?,這種方式所取得的對應是合理的,和在大多數(shù)情況下達到子象素的準確度。依靠選擇第一幀面中的點很容易進一步自動執(zhí)行這一過程,為此空間導數(shù)Hessina矩陣可作良好地適應,類似于[4,7,34]的方案中所建議的置信度值,但這里并不企圖這樣來建議一完整的系統(tǒng),僅只是測試三線性再投影法的性能和次其與表射偏振交叉和線性組合法的性能和比較。
三線性法需要三視圖間至少7個對應點(這里需要26個方程,而7點提供28個方程),而表射偏振交叉可以8點進行(原則上)。現(xiàn)在要解決的問題是為達到合理的性能實際需要多少點數(shù)(由于對應中的誤差、透鏡畸變和其他可能由針孔攝象機模型不適當?shù)啬M的效果)。
三線性結果首先被以最小點數(shù)(7個)用于為系數(shù)求解,然后被應用于以8、9和10點的一線性最小二乘方解(應指出,一般利用SVD或Jacobi法替代線性最小二乘方可得到較佳的解,但這里并不想這樣做)。結果如圖3A-3B所示。7點提供的再投影具有最大誤差為3.3象素和平均誤差為0.98象素。利用10點的解取得最大誤差為1.44和平均誤差為0.44象素的改善。利用8和9點的性能合乎情理地在以上的性能之間。采用更多的點沒有顯著改善此結果,例如,當所有的34點均采用時最大誤差降到1.14象素,平均誤差為0.42象素。
接著應用表射偏振交叉法。為求取基本矩陣采取2種方法。一個方法是采用[20]的措施,另一個是利用來自一個平面(基礎平面)的4個對應點。在前一情況中,為實現(xiàn)合理的結果需要比8點多得多的點。例如在利用全部34點時最大誤差為43.4象素和平均誤差為9.58象素。在后一情況中,首先求得因基礎平面所引起的單應性B而后利用二附加點(暗盒上的點)得到表射偏振v″。這樣就知道(見[28,21,32])F13=[v″]B,其中[v″]是v″的反對稱矩陣。求取F23采用了同樣的過程。因此僅6點被用于再投影,但盡管如此結果還是稍有改善最大誤差為25.7和平均誤差為7.7象素。圖4A-4B表明這些結果。
最后測試了利用線性組合方法再投影的性能。由于線性組合方法僅適用于正射視圖,這里實際上是在透視情況下測試正射假設,或者換句話說,即三線性方程的高階項(二線性和三線性)是否有意義。線性組合方法需要至少三視圖間的4個對應點。應用此方法是利用4、10(為了與圖3A-3B中所示的三線性情形比較)和全部34點(后兩者利用線性最小二乘方)。結果顯示在圖5A-5C中。所有情況中的性能均大大差于采用三線性函數(shù)時,但比表射偏振交叉法為佳。VI.討論已經看到,一般情況下一固定的3D對象的任一視圖均能用二個參考視圖表示為一三線性函數(shù),或者在參考視圖由平行投影所產生時表現(xiàn)為一雙線性函數(shù)。這些函數(shù)提供為處理一景象的視圖可選擇的較之其他方法簡單得多的措施。而且它們在理論上需要較少的對應點,而在實踐中還少得多。試驗結果表明三線性函數(shù)實踐中還有利于產生較之表射偏振交叉或線性組合方法顯著要好的性能。
一般二個視圖使一“基本”矩陣(見[10].)能表述此二視圖之間的表射偏振幾何參數(shù),且該矩陣的陣元受主體約束(矩陣的秩為2)。三線性結果(Theorem1,2)意味著三個視圖可以有一帶有27個不同的元素的張量。已看到在表射偏振約束不起作用,例如在三個攝象機沿著一直線(并非一不是普通的情況)時,此張量仍能起作用。本文中沒有討論7點的奇異組構情況(除7個共面點的明顯的奇異組構外)。但再投影結果的健壯性可以指明任一這樣的組構是非常少有或者不存在的。因而重要的是要研究這一課題,因為廣泛相信表射偏振約束的數(shù)量上的不穩(wěn)定是在于這種危形表面的存在?!叭€性”張量的標記,其特性,對三視圖的幾何參數(shù)的關系,和對由多視圖作3D重現(xiàn)的應用,構成了重要的未來的方向。
整個本說明中所強調的應用是通過對準作視覺識別。以新視圖(ψ3)所需的最小點數(shù)(7)得到合理的性能,這可能是太多了,如果由試驗點匹配的所有可能的組合來達到圖象的模型匹配的話。在模型為正射的但新視圖是透視的特殊情況下的雙線性函數(shù)的存在從對點計數(shù)的觀點上看較吸引人。這里已得到為識別透視圖僅需要5個對應點(只要能滿足模型是正射的要求)。沒有進行以雙線性函數(shù)的試驗來檢查在實踐上需要多少點,但計劃在未來進行。因為它們的簡單性,人們可以推測這些代數(shù)函數(shù)將會在除視覺識別外的任務中獲得應用,其中一些在下面討論。
可能存在一些簡單性成為主要重點的其他應用,而點數(shù)則較少考慮??紤]例如基于模型的壓縮的應用。采用三線性函數(shù)需要17個參數(shù)來將一視圖表示成完全對應中的二參考視圖的函數(shù)(回想,為了將對應點數(shù)由9降到7采用了27個系數(shù))。假定發(fā)送方和接收方都具有二參考視圖并應用為獲得二視圖間的對應的相同算法。為發(fā)送第三視圖(忽略可作分開處理的自閉問題)發(fā)送方可利用許多點對17個參數(shù)求解,但最后僅發(fā)送此17個參數(shù)。然后接收方僅只是按給于所接收參數(shù)的“三線性法”來組合此二參考視圖。這顯然屬于點數(shù)不是要主要考慮的、而簡單性和因計算的簡化而得的健壯性(如上述)則是最重要的范疇。
關于圖象編碼,最近[1,2]推薦將圖象分解為“層”的方法。此法中一系列視圖被分成為區(qū),每一區(qū)的運動被近似地以一2D仿射變換來描述。發(fā)送方發(fā)送第一個圖象后僅跟隨各后續(xù)幀的每一區(qū)的6個仿射參數(shù)。應用視圖的代數(shù)函數(shù)有可能使這一方法更為有效,因為替代將景象分成為平面而可以試著將景象分成為對象,每一個帶有描述其在隨后的幀上的位移的17個參數(shù)。
應用的另外領域可以是計算機制圖。再投影技術使得圖象復制簡化。給定某3D對象的二個經完成復制的視圖,其他視圖(仍然忽略自閉鎖)就可僅以“組合”參考視圖來加以復制。這里,對應點數(shù)仍然不作太多考慮。
參考文獻[1]E.H.Adelson.Layerea representations for image coding.Technical Report 181,MediaLaboratory,Massachusetts Institute of Technology.1991.[2]E.H.Adelson and J.Y.A.Wang.Layered representation for motion analysis.In Proceed-ings IEEE Conf.on Computer Vision and Pattern Recognition,pages 361-366,NewYork.NY,June 1993.[3]G.Adiv.Innerent ambiguities in recovering 3D motion and structure from a noisyflow field.IEEE Transactions on Pattern Analysis and Machine Intelligence,PAMI-11(5)477-489,1989.[4]P.Anandan. A unified perspective on computational techniques for the measurementof visual motion.In Proceedings Image Understanding Workshop. pages 219-230,LosAngeles,CA,F(xiàn)ebruary 1987.Morgan Kaufmann,San Mateo,CA[5]I.A.Bachelder and S.Ullman.Contour matching using local affine transformations.InProceedings Image Understanding Workshop.Morgan Kaufmann,San Mateo,CA,1992.[6]E.B.Barrett,M.H.Brill,N.N.Haag,and P.M.Payton.Invariant linear methods inphotogrammetry and model-matching,In J.L.Mundy and A.Zisserman.editors.Ap-plications of invariances in computer vision. MIT Press,1992.[7]J.R.Bergen and R.Hingorani.Hierarchical motion-based frame rate conversion.Tech-nical report,David Sarnoff Research Center,1990.[8]S.Demey,A.Zisserman,and P.Beardsley.Affine and projective structure from motion.In Proceedings of the British Machine Vision Conference,October 1992.[9]R.Dutta and M.A.Synder.Robustness of correspondence based structure from motion.In Proceedings of the International Conference on Computer Vision,pages 106-110,Osaka,Japan,December 1990.[10]O.D.Faugeras.What can be seen in three dimensions with an uncalibrated stereo rig?In Proceedings of the European Conference on Computer Vision,pages 563-578. SantaMargherita Ligure.Italy.June 1992.[11]O.D.Faugeras and L.Robert.What can two images tell us about a third one?TechnicalReport INRIA,F(xiàn)rance.1993.[12]W.E.L.Grimson.Why stereo vision is not always about 3D reconstruction.A.I.MemoNo.1435,Artificial Intelligence Laboratory.Massachusetts Institute of Technology.July1993.[13]R.Hartley,R.Gupta,and T.Chang.Stereo from uncalibrated cameras.In ProceedingsIEEE Conf.on Computer Vision and Pattern Recognition,pages 761-764,Champaign,IL.,June 1992.[14]B.K.P.Horn.Relative orientation.International Journal of Computer Vision,459-78,1990.[15]B.K.P.Horn.Relative ocientation revisited.Journal of the Optical Society of America,
S1630-1638,1991.[16]D.P.Huttenlocher and S.Ullman.Recognizing solid objects by alignment with an image.
International Journal of Computer Vision,5(2)195-212,1990.[17]J.J.Koenderink and A.J.Van Doorn.Affine structure from motion.Journal of theOptical Society of America,8377-385,1991.[18]H.C.Longuet-Higgins.A computer algorithm for reconstructing a scene from two pro-jections.Nature,293133-135,1981.[19]H.C.Longuet-Higgins.the reconstruction of a scene from two projections-configura-tions that defeat the 8-point algorithm.In Proc.of the 1st Conf.AI applications,pages395-397,Denver,December 1984.[20]Q.T.Luong,R.Deriche,O.D.Faugeras,and T.Papadopoulo.On determining thefundamental matrixAnalysis of different methods and experimental results.TechnicalReport INRIA,F(xiàn)rance,1993.[21]Q.T.Luong and T.Vieville.Canonical representations for the geometries of multipleprojective views.Technical Report INRIA,F(xiàn)rance,fall 1993.[22]S.J.Maybank.The projective geometry of ambiguous surfaces.Proceedings of the RoyalSociety of London,3321-47,1990.[23]J.Mundy and A.Zisserman.Appendix-projective geometry for machine vision.InJ.Mundy and A.Zisserman,editors,Geometric invariances in computer vision. MITPress,Cambridge,1992.[24]J.L.Mundy,R.P.Welty,M.H.Brill,P.M.Payton,and E.B.Barrett.3D model align-ment without computing pose.In Proceedings Image Understanding Workshop.pages727-735.Morgan Kaufmann,San Mateo,CA,January 1992.[25]A.Shashua.Correspondence and affine shape from two orthographic viewsMotionand Recognition. A.I.Memo No.1327,Artificial Intelligence Laboratory,MassachusettsInstitute of Technology,December 1991.[26]A.Shashua.Geometry and Photometry in 3D visual recognition. PhD thesis.M.I.TArtificial Intelligence Laboratory,AI-TR-1401,November 1992.[27]A.Shashua.Illumination and view position in 3D visual recognition. In S.J.HansonJ.E.Moody and R.P.Lippmann,editors,Advances in Neural Information ProcessingSystems 4,pages 404-411.San Mateo,CAMorgan Kaufmann Publishers,1992.Pro-ceedings of the fourth annual conference NIPS,Dec.1991.Denver.CO[28]A.Shashua.On geometric and algebraic aspects of 3D affine and projective structuresfrom perspective 2D views. In The 2nd European Workshop on Invariants.Ponta Dela-gada. Azores,October 1993. Also in MIT AI memo No.1405,July 1993.[29]A.Shashua.Projective depthA geometric invariant for 3D reconstruction from twoperspective/orthographic views and for visual recognition. In Proceedings of the Inter-national Conference on Computer Vision,pages 583-590,Berlin,Germany,May 1993.[30]A.Shashua.Projective structure from uncalibrated imagesstructure from motion andrecognition.IEEE Transactions on Pattern Analysis and Machine Intelligence,1994.inpress.[31]A.Shashua.Trilinearity in visual recognition by alignment. In Proceedings of the Euro-pean Conference on Computer Vision,Stockholm,Sweden,May 1994.[32]A.Shashua and N.Navab.Relative affine structureTheory and application to 3dreconstruction from perspective views.In Proceedings IEEE Conf.on Computer Visionand Pattern Recognition,Seattle,Washington,1994.[33]A.Shashua and S.Toelg.The quadric reference surfaceApplications in registeringviews of complex 3d objects.In Proceedings of the European Conference on ComputerVision,Stockholm,Sweden,May 1994.[34]C.Tomasi and T.Kanade.Factoring image sequences into shape and motion.In IEEEWorkshop on Visval Motion,pages 21-29,Princeton,NJ,September 1991.[35]R.Y.Tsai and T.S.Huang.Uniqueness and estimation of three-dimensional motionparameters of rigid objects with curved surface.IEEE Transactions on Pattern Analysisand Machine Intelligence,PAMI-613-26.1984.[36]S.Ullman.The Interpretation of Visual Motion.MIT Press,Cambridge and London,1979.[37]S.Ullman.Aligning pictorial descriptionsan approach to object recognition.Cognition,32193-254,1989.Alsoin MIT AI Memo 931,Dec.1986.[38]S.Ullman and R.Basri.Recognition by linear combination of models.IEEE Transac-tions on Pattern Analysis and Machine Intelligence,PAMI-13992-1006.1991.Also inM.I.T AI Memo 1052,1989.[39]D.Weinshall.Model based invariants for 3-D vision.International Journal of ComputerVision,10(1)27-42,1993.
應當理解,這里所證明和描述的某些或所有的圖象處理操作可以以軟件來實現(xiàn)。換言之,這里所證明和描述的某些或所有的圖象處理操作可以以ROM(只讀存貯器)形式來實現(xiàn)。另外,此軟件成分如果希望的話可以采用通常的技術以硬件來實現(xiàn)。
本發(fā)明具有非常廣泛的應用,特別能應用于所有由2D到3D的技術是公認為有用的領域。本發(fā)明的應用至少包含下列這些包括由空中和衛(wèi)星照相繪制地圖和宇宙空間和船塢裝配場地的座標測量的攝影測繪方面的應用,生產部件的座標測量,生產部件的自動光學檢查,機器人單元對準,機器人軌跡識別,3D機器人反饋,景象的3D模擬,對象的3D模擬,反向工程,和3D數(shù)字化。
附錄B為按照本發(fā)明一優(yōu)選實施例構成和運行的3D再現(xiàn)設備的優(yōu)選軟件實現(xiàn)的列表。為根據(jù)附錄B實現(xiàn)此3D再現(xiàn)設備,可將Math Soft提供的商業(yè)Maple2軟件與IBM PCT或SUNI作站結合使用。可采用以下過程a.利用OPEN FILE命令將按附錄B的列表生成的程序裝載進Maple2;b.將光標移動到出現(xiàn)WITH(LINALG)命令的行以運行此子例程序;c.操作RETURN鍵直至光標到達文件的末尾;d.然后光標返回到文件的起始;e.按壓RETURN直至到達隨后的行來進行模擬,包括EVALN(PCOMP)然后系統(tǒng)在屏幕上打印出給定的3D世界與再現(xiàn)的3D世界間的比較。
應理解,附錄B列表也有用于實現(xiàn)這里所證明和描述的圖象變換設備和方法。此圖象變換實施方案例如可基于與上述標題為“用于識別的代數(shù)函數(shù)”一節(jié)的等式3和4相結合使用的附錄B的列表。
應理解附錄中所描述的特定實施方案僅僅是企圖用來對本發(fā)明作詳盡的揭示而不是要對之作出限制。
應理解的是,為了清楚而在各個不同實施例的組成中說明的本發(fā)明的各種特點也可組合進一單個的實施例中來得到。相反,為了簡要而在單個實施例的組成中說明的本發(fā)明的各種特點也可分開地或在任一適合的子組合中得到。
熟悉本技術領域的人們將會理解本發(fā)明并不限于以上已特別證明和描述的一切。而是,本發(fā)明的范圍僅由后列的權利要求來確定。
BOOL ComputeAllTensors(IN int nTrials,TENSTensors[MAX_FRAMES][MAX_FRAMES][MAX_FRAMES],OUT DMAT3 E_basis[MAX_FRAMES][MAX_FRAMES][4],OUT int*size_E_basis){int rf,bf,i,j,k,l,m,n;int num_frames_for_i;int legalFrame[MAX_FRAMES];double**rank4mat,*w,**v_tr,doublethresh4;BOOLfoundThresh;doublesum;int*dummy;/*for the call of findTensor*//*check the the number of frames is not too large*/if(NumberOfFrames>MAX_FRAMES){return(FALSE);}/*loop on the reference frame*/for(rf=0;rf<NumberOfFrames;rf++){/*consider only marked frame*/if(((specified_rf<0)‖(rf=specified_rf))&&Images_Flags[rf]){/*loop on the i′th frame*/for(i=0;i<NumberOfFrames;i++){/*consider only marked frame different of rf*/if(Images_Flags[i]&&(i?。絩f)){/*initialize num_frames_for_i*/(*size_E_basis)=0;num_frames_for_i=0;/*loop on the base frame*//**There is dependence between*Tensors[rf][i][bf]and Tensors[rf][bf][i]*so we avoid the computation of Tensors[rf][i][bf]*for bf<i*/for(bf=(i+1);bf<NumberOfFrames;bf++){/*consider only marked frame different of rf*/if(Images_Flags[bf]&&(bf?。絩f)){findTensor(Tensors[rf][i][bf],rf,i,bf,0,dummy,0,nTrials);legalFrame[num_frames_for_i]=bf;num_frames for_i++;}}for(bf=0;bf<i;bf++){if(Images_Flags[bf]&&(bf?。絩f)){for(j=0;j<3;j++){for(k=0;k<3;k++){for(l=0;l<3;l++){Tensors[rf][i][bf][j][k][l]=Tensors[rf][bf][i][k][j][l];}}}legalFrame[num_frames_for_i]=bf;num_frames_for_i++;}}if(num_frames_for_i>1){/*there are num_frames_for_i Tensors for these*//*rf and i and when ordering the E0,E1,E2 to a*//*9-by-(3*num_frames_for_i)matrix its rank=4*//*Note that E[j]=Tensors[rf][i][bf][*][j][*]*/(*size_E_basis)=4;/*if num_frames_for_i>2 we consider the transposed*//*matrix for the svdcmp which requires rows>=cols*/if(num_frames_for_i=2){rank4mat=dmatrix(1,9,1,6);w=dvector(1,6);v_tr=dmatrix(1,6,1,6);for(bf=0;bf<num_frames_for_i;bf++){for(j=0;j<3;j++){for(k=0;k<3;k++){for(l=0;l<3;l++){rank4mat[l+3*k+i][l+3*bf+j]=Tensors[rf][i][legalFrame[bf]][k][j][l];}}}}if(!svdcmp(rank4mat,9,6,w,v_tr)){free_dmatrix(rank4mar,1,9,1,6);free_dvector(w,1,6);free_dmatrix(v_tr,1,6,1,6);return(FALSE);}/*look for threshold for the largest 4 values*/foundThresh=FALSE;thresh4=0.02;while(!foundThresh){n=0;for(k=1;k<=6;k++){if(w[k]>thresh4){n++;}}if(n>4){thresh4*=2;}else if (n<4){thresh4/=2;}else{foundThresh=TRUE;}}/*the 4 columnsof rank4mat which correspond to*//*the 4 largest singular values form E_basis*//*Note that E_basis is[4][9]i.e.goes by rows*/n=0;for(m=1;m=6;m++){if(w[m]>thresh4){for(k=0;k<3;k++){for(l=0;l<3;l++){E_basis[rf][i][n][k][l]=rank4mat[l+3*k+l][m];}}n++;}}if(!ImproveE_basis(E_basis[rf][i])){free_dmatrix(rank4mat,1,9,1,6);free_dvector(w,1,6);free_dmatrix(v_tr,1,6,1,6);return(FALSE);}/*improve the tensors with the svd results*/for(bf=0;bf<num_frames_for_i;bf++){for(j=0;j<3;j++){for(k=0;k<3;k++){for(l=0;l<3;l++){sum=0.0;n=0;for(m=1;m<=6;m++){if(w[m]>thresh4){sum+=E_basis[rf][i][n][k][l]*w[m]*v_tr[l+3*bf+j][m];n++;}}Tensors[rf][i][legalFrame[bf]][k][j][l]=sum;}}}}free_dmatrix(rank4mat,1,9,1,6);free_dvector(w,1,6);free_dmatrix(v_tr,1,6,1.6);else{rank4mat=dmatrix(1,3*num_frames_for_i,1,9);w=dvector(1,9);v_tr=dmatrix(1,9,1,9);for(bf=0;bf<num_frames_for_i;bf++){for(j=0;j<3;j++){for(k=0;k<3;k++){for(l=0;l<3;l++){rank4mat[l+3*bf+j][l+3*k+l]=Tensors[rf][i][legalFrame[bf]][k][j][l];}}}}if(!svdcmp(rank4mat,3*num_frames_for_i,9,w,v_tr)){free_dmatrix(rank4mat,1,3*num_frames_for_i,1,9);free_dvector(w,1,9);free_dmatrix(v_tr,1,9,1,9);return(FALSE);}/*look for threshold for the largest 4 values*/foundThresh=FALSE;thresh4=0.02;while(!foundThresh){n=0;for(k=1;k=9;k++){if(w[k]>thresh4){n++;}}if(n>4){thresh4*=2;}else if(n<4){thresh4/=2;}else{foundThresh=TRUE;}}/*the 4 rows of v which correspond to the*//*4 largest singular values form E_basis*/n=0;for(m=1;m<=9;m++){if(w[m]>thresh4){for(k=0;k<3;k++){for(l=0;l<3;l++){E_basis[rf][i][n][k][l]=v_tr[l+3*k+l][m];}}n++;}}if(!ImproveE_basis(E_basis[rf][i])){free_dmatrix(rank4mat,1,3*num_frames_for_i,1,9);free_dvector(w,1,9);free_dmatrix(v_tr,1,9,1,9);return(FALSE);}/*improve the tensors with the svd results*/for(bf=0;bf<num_frames_for_l;bf++){for(j=0;j<3;j++){for(k=0;k<3;k++){for(l=0;l<3;l++){sum=0.0;n=0;for(m=1;m=9;m++){if(w[m]>thresh4){sum+=rank4mat[l+3*bf+j][m]*w[m]*E_basis[rf][i][n][k][l];n++;}}Tensors[rf][i][legalFrame[bf]][k][j][l]=sum;}}}}free_dmatrix(rank4mat,1,3*num_frames_for_i,1,9);free_dvector(w,1,9);free_dmatrix(v_tr,1,9,1,9);}}else if(num_frames_for_i=1){(*size_E_basis)=3;/*keep the tensor as the first 3 of E_basis[rf][i]*/for(j=0;j<3;j++){for(k=0;k<3;k++){for(l=0;l<3;l++){E_basis[rf][i][j][k][l]=Tensors[rf][i][legalFrame
][k][j][l];}}}}}}}}return(TRUE);}ComputeAllEpipoies(IN DMAT3E_basis[MAX_FRAMES][MAX_FRAMES][4],IN int size_E_basis,IN BOOL removeOutliers,OUT DXYZ Epipoles[MAX_FRAMES][MAX_FRAMES]){int rf,i;doubleerror;int n_Eq;int row,i,j,k,m;double**Eqn;int nCols=3,nSizes=1,nGroups[1],Sizes[1];int minRows=4,nTrials=100,n_Eq_new;doublerow_sum;DMAT3 mat;DMAT3 mat3,Epimat;/*check the the number of frames is not too large*/if(NumberOfFrames>MAX_FRAMES){return(FALSE);}/*given a pair of images (rf,i)*//*there are 3*size_E_basis*(size_E_basis-1)+*//*6*size_E_basis*size_E_basis equations*/Eqn=dmatrix(0,3*size_E_basis*(size_E_basis-1)+6*size_E_basis*size_E_basis-1,0,2);/*loop on the reference frames*/for(rf=0;rf<NumberOfFrames;rf++){/*consider only marked frames*/if(((specified_rf<0)‖(rf=specified_rf))&& Images_Flags[rf]){/*loop on the i′th frame*/f or(i=0;i<NumberOfFrames;i++){/*consider only marked frames that differ from rf*/if(Images_Flags[i]&&(i?。絩f)){/*accumulate equations on Epipole*/n_Eq=0;/*contribution of Tensors[rf][i][bf][*][j][*]*//*denoting E[j]=Tensors[rf][i][bf][*][j][*]and*//*E[j][k]=Tensors[rf][i][bf[*][j][k]then*/
/*the fundamental matrix.*//*In particular,transposed(E[j])*[v′]*E[i]*//*is a skew symmetric matrix and therefore*//*v′CROSS E[j][k]dot E[l][k]=0 for j<1*//*and also v′CROSS E[j][k]dot E[l][m]+*//*v′CROSS E[j][m] dot E[l][k]=0 for j<l,k<m*//*Equivalently(being the same″volume″)*//*E[j][k]CROSS E[l][k]dot v′=0 for j<1 k=0,1,2*//*and also E[j][k]CROSS E[l][m]dot v′+*//*E[j][m]CROSS E[l][k]dot v′=0 for j<1 k<m*/for(row=0;row<(3*size_E_basis*(size_E_basis-1)+6*size_E_basis*size_E_basis);row++){for(l=0;l<3;l++){Eqn[n_Eq+row][l]=0.0;}}/*loop on E_basis[j]*/for(j=0;j<(size_E_basis-1);j++){/*loop on E_basis[1]*/for(l=(j+1);l<size_E_basis;l++){/*loop on the column*/for (k=0;k<3;k++){Eqn[n_Eq]
=E_basis[rf][i][j][1][k]*E_basis[rf][i][l][2][k]-E_basis[rf][i][j][2][k]*E_basis[rf][i][l][1][k];Eqn[n_Eq][1]=E_basis[rf][i][l]
[k]*E_basis[rf][i][j][2][k]-E_basis[rf][i][l][2][k]*E_basis[rf][i][j]
[k];Eqn[n_Eq][2]=E_basis[rf][i][j]
[k]*E_basis[rf][i][l][1][k]-E_basis[rf][i][j][1][k]*E_basis[rf][i][l]
[k];/*normalize the equation*/row_sum=Eqn[n_Eq]
*Eqn[n_Eq]
+Eqn[n_Eq][1]*Eqn[n_Eq][1]+Eqn[n_Eq][2]*Eqn[n_Eq][2];if(row_sum>0.0){row_sum=sqrt(row_sum);Eqn[n_Eq]
/=row_sum;Eqn[n_Eq][1]/=row_sum;Eqn[n_Eq][2]/=row_sum;n_Eq++;}}for(k=0;k<2;k++){for(m=(k+1);m<3;m++){Eqn[n_Eq]
=E_basis[rf][i][j][1][k]*E_basis[rf][i][l][2][m]-E_basis[rf][i][j][2][k]*E_basis[rf][i][l][1][m]+E_basis[rf][i][j][1][m]*E_basis[rf][i][l][2][k]-E_basis[rf][i][j][2][m]*E_basis[rf][i][l][1][k];Eqn[n_Eq][1]=E_basis[rf][i][l]
[m]*E_basis[rf[i][j][2][k]-E_basis[rf][i][l][2][m]*E_basis[rf][i][j]
[k]+E_basis[rf][i][l]
[k]*E_basis[rf][i][j][2][m]-E_basis[rf][i][l][2][k]*E_basis[rf][i][j]
[m];Eqn[n_Eq][2]=E_basis[rf][i][j]
[k]*E_basis[rf][i][l][1][m]-E_basis[rf][i][j][1][k]*E_basis[rf][i][l]
[m]+E_basis[rf][i][j]
[m]*E_basis[rf][i][l][1][k]-E_basis[rf][i][j][1][m]*E_basis[rf][i][l]
[k];/*normalize the equation*/row_sum=Eqn[n_Eq]
*Eqn[n_Eq]
+Eqn[n_Eq][1]*Eqn[n_Eq][1]+Eqn[n_Eq][2]*Eqn[n_Eq][2];if(row_sum>0.0){row_sum=sqrt(row_sum);Eqn[n_Eq]
/=row_sum;Eqn[n_Eq][1]/=row_sum;Eqn[n_Eq][2]/=row_sum;n_Eq++;}}}}}/*additional size_E_basis*size_E_basis*6eqns*//*come from[v′]*E[rf][i][j]*E[i][rf][k]being*//*skew symmetric for any j,k.*/if(specified_rf<0){/*loop on E_basis[rf][i][j]*/for(j=0;j<size_E_basis;j++){/*loop on E_basis[i][rf][l]*/for(l=0;l<size_E_basis;l++){matmulmat3(mat.E_basis[rf][i][j],E_basis[i][rf][l]);/*ignore mat if it is a scalar matrix*/if((mat
[1]>mm_epsilon)‖(mat
[1]<-mm_epsilon)‖(mat
[2]>mm_epsilon)‖(mat
[2]<-mm_epsilon)‖(mat[1][2]>mm_epsilon)‖(mat[1][2]<-mm_epsilon)‖(mat[1]
>mm_epsilon)‖(mat[1]
<-mm_epsilon)‖(mat[2]
>mm_epsilon)‖(mat[2]
<-mm_epsilon)‖(mat[2][1]>mm_epsilon)‖(mat[2][1]<-mm_epsilon)){Eqn[n_Eq]
=0.0;Eqn[n_Eq][1]=mat[2]
;Eqn[n_Eq][2]=-mat[1]
;/*normalize the equation*/row_sum=Eqn[n_Eq]
*Eqn[n_Eq]
+Eqn[n_Eq][1]*Eqn[n_Eq][1]+Eqn[n_Eq][2]*Eqn[n_Eq][2];if(row_sum>0.0){row_sum=sqrt(row_sum);Eqn[n_Eq]
/=row_sum;Eqn[n_Eq][1]/=row_sum;Eqn[n_Eq][2]/=row_sum;n_Eq++;}Eqn[n_Eq]
=-mat[2][1];Eqn[n_Eq][1]=0.0;Eqn[n_Eq][2]=mat
[1];/*normalize the equation*/row_sum=Eqn[n_Eq]
*Eqn[n_Eq]
+Eqn[n_Eq][1]*Eqn[n_Eq][1]+Eqn[n_Eq][2]*Eqn[n_Eq][2];if(row_sum>0.0){row_sum=sqrt(row_sum);Eqn[n_Eq]
/=row_sum;Eqn[n_Eq][1]/=Tow_sum;Eqn[n_Eq][2]/=row_sum;n_Eq++;}Eqn[n_Eq]
=mat[1][2];Eqn[n_Eq][1]=mat
[2];Eqn[n_Eq][2]=0.0;/*normalize the equation*/row_sum=Eqn[n_Eq]
*Eqn[n_Eq]
+Eqn[n_Eq][1]*Eqn[n_Eq][1]+Eqn[n_Eq][2]*Eqn[n_Eq][2];if(row_sum>0.0){row_sum=sqrt(row_sum);Eqn[n_Eq]
/=row_sum;Eqn[n_Eq][1]/=row_sum;Eqn[n_Eq][2]/=row_sum;n_Eq++;}Eqn[n_Eq]
=-mat[2]
;Eqn[n_Eq][1]=mat[2][1];Eqn[n_Eq][2]=mat
-mat[1][1];/*normalize the equation*/row_sum=Eqn[n_Eq]
*Eqn[n_Eq]
+Eqn[n_Eq][1]*Eqn[n_Eq][1]+Eqn[n_Eq][2]*Eqn[n_Eq][2];if(row_sum>0.0){row_sum=sqrt(row_sum);Eqn[n_Eq]
/=row_sum;Eqn[n_Eq][1]/=row_sum;Eqn[n_Eq][2]/=row_sum;n_Eq++;}Eqn[n_Eq]
=mat[1]
;Eqn[n_Eq][1]=mat[2][2]-mat
;Eqn[n_Eq][2]=-mat[1][2];/*normaiize the equation*/row_sum=Eqn[n_Eq]
*Eqn[n_Eq]
+Eqn[n_Eq][1]*Eqn[n_Eq][1]+Eqn[n_Eq][2]*Eqn[n_Eq][2];if(row_sum>0.0){row_sum=sqrt[row_sum);Eqn[n_Eq]
/=row_sum;Eqn[n_Eq][1]/=row_sum;Eqn[n_Eq][2]/=row_sum;n_Eq++;}Eqn[n_Eq]
=mat[1][1]-mat[2][2];Eqn[n_Eq][1]=-mat
[1]; Eqn[n_Eq][2]=mat
[2];/*normaiize the equation*/row_sum=Eqn[n_Eq]
*Eqn[n_Eq]
+Eqn[n_Eq][1]*Eqn[n_Eq][1]+Eqn[n_Eq][2]*Eqn[n_Eq][2];if(row_sum>0.0){row_sum=sqrt(row_sum);Eqn[n_Eq]
/=row_sum;Eqn[n_Eq][1]/=row_sum;Eqn[n_Eq][2]/=row_sum;n_Eq++;}}}}}if(removeOutliers){/*remove outliers*nGroups
=n_Eq;Sizes
=1;if(!removeEqOutliers(Eqn,nCols,nSizes,nGroups,Sizes,minRows,nTrials,SquaredThreshold,&n_Eq_new)){n_Eq=n_Eq_new;}}if(n_Eq>0){/*solve F by Jacobi*/find_sol_jacobi(Eqn.n_Eq,3,Epipoles[rf][i],&error);}}}}}free_dmatrix(Eqn,0.3*size_E_basis*(size_E_basis-1)+6*size_E_basis*size_E_basis-1,0,2);return(TRUE);}BOOL ImproveE_basis(INOUT DMAT3 E_basis[4]){inti,j,k,l,m;double**u,**v_tr,*w;double min_sv,sum;/*Note that each of the 3 4-by-3 matrices E_basis[*][*][j]is of*//*rank 2.After applying svd to each of them,ignore the smallest*//*singular value(which should be 0)in order to improve them*/u=dmatrix(1,4,1,3);v_tr=dmatrix(1,3,1,3),w=dvector(1,3);for(j=0;j<3;j++){for(k=0;k<4;k++){for(l=0;l<3;l++){u[1+k][1+l]=E_basis[k][l][j];}}if(!svdcmp(u,4,3,w,v_tr)){free_dmatrix(u,1,4,1,3);free_dmatrix(v_tr,1,3,1,3);free_dvector(w,1,3);return(FALSE);}/*find smallest singular value*min_sv=w[1];i=1;for(l=2;l<=3;l++){if(w[1]<min_sv){min_sv=w[1];i=1;}}/*replace the E_basis by the product ignoring w[i]*/for(k=0;k<4;k++){for(l=0;l<3;l++){sum=0.0;for(m=1;m=3;m++){if(m!=i){sum+=u[1+k][m]*w[m]*v_tr[1+l][m];}}E_basis[k][l][j]=sum;}}}free_dmatrix(u,1,4,1,3);free_dmatrix(v_tr,1,3,1,3);free_dvector(w,1,3);return(TRUE);}FUNCTIONBOOLremoveEqOutliers /*remove outliers for homogeneous system*/(INOUT double* *Mat, /*the initial equations*/IN int nCols, /*there are nCols columns (unknowns)*/IN int nSizes, /**it is assumed that the equations are*organized in groups.These groups*have nSizes different sizes.*/IN int nGroups[], /**there are nSizes nGroups which mark the*number of groups of each size*/IN int Sizes[], /**there are nSizes Sizes which mark the*size of each group.*e.g.the first nGroups
are groups*each of size Sizes
,and so on*/IN int minRows, /**each iteration, try at least*minRows number of rows*/IN int nTrials, /*number of random trials to perform*/IN double SquaredThreshold,/*for boundary determination*/OUT int*outMatRows/**The number of rows in Mat to be*considered.These rows are the first*rows in the output Mat and do not*keep any grouping order*/)/DESCRIPTIONGiven the initial equations in Mat,get rid of theoutliers and keep the fitting equations as the leading rowsof the ontput Mat.Perform nTrials random trials,each time randomly choose groupsso that there are at least minRows equations.Solve this setof n_current_equations by Jacobi and check the solution againstALL equations.Keep track of the best solution(for which thenorm of the Mat*sol is minimal).Use the best solution to determine outliers(keeping theinitial partition of the equations into groups).Put the groups which fit the best solution as the leading*outMatRows rows of MatASSUMPTIONSThe equations are normalized so that there is no need toconsider the equation′s norm when performing the outliersremovalAUTHORTamir Shalom(April 10 1995)*/{int i,j,k,l;int iTrial;int iRows;int iGroup;int maxSize;int initialRows;/*how many initial rows*/int nTotalGroups; /*how many total groups*/int nAvailGroups; /*how many available groups*/double**subMat;int*from_row;/**starting row in Mat which*corresponds to Pth group*(among all nTotalGroups)*/int*to_row_plusl; /*ending row ...*/int nrandGroup;doubleerror,boundary;double*solution,*best_solution;doublesquared_norm,entry,min_error;/**Let maxSize be the maximal size of groups,thene*the maximal number of rows that will be used is*minRows+maxSize-1.*//*find maxSize,initialRows and nTotalGroups*/initialRows=nGroups
*Sizes
;nTotalGroups=nGroups
;maxSize=Sizes
;for(i=1;i<nSizes;i++){initialRows+=nGroups[i]*Sizes[i];nTotalGroups+=nGroups[i];if(Sizes[i]>maxSize){maxSize=Sizes[i];}}if(initialRows<minRows){return(FALSE);}/*allocate subMatrix*/subMat=dmatrix(0,minRows+maxSize-1-1,0,nCols-1);/*allocate solution and best_solution*/solution=dvector(0,nCols-1);best_solution=dvector(0,nCols-1);/*allocate from_row and to_row_plus1*/from_row=ivector(0,nTotalGroups-1);to_row_plus1=ivector(0,nTotaiGroups-1);/*perform the trials*/for(iTrial=0;iTrial<nTrials;iTrial++){/*initialize from_row and to_row_plus1*/iRows=0;iGroup=0;nAvailGroups=nTotalGroups;for(i=0;i<nSizes;i++){for(j=0;j<nGroups[i];j++){from_row[iGroup]=iRows;iRows+=Sizes[i];to_row_plus1[iGroup]=iRows;iGroup++;}}/*iRows denotes the number of already chosen equations*/iRows=0;while(iPows<minRows){nrandGroup=randomn(nAvailGroups);/*move the group to the subMat*/for(i=from_row[nrandGroup];i<to_row_plus1[nrandGroup];i++){for(j=0;j<nCols;j++){subMat[iRows][j]=Mat[i][j];}iRows++;}/*update nAvailGroups,from_row and to_row_plus1*/nAvailGroups--;for(i=nrandGroup;i<nAvailGroups;i++){from_row[i]=from_row[i+1];to_row_plus1[i]=to_row_plus1[i+1];}}/*solve the equations of subMat*/find_sol_jacobi(subMat.iRows,nCols.solution,&error);/*estimate the solution against all equations*/squared_norm=0.0;for(i=0;i<initialRows;i++){/**compute the Pth entry of the resuiting product of*Mat by solution*/entry=0.0;for(j=0;j<nCols;j++){entry+=Mat[i][j]*solution[j];}squared_norm+=entry*entry;}if((iTrial=0)‖(squared_norm<min_error)){min_error=squared_norm;/*printf(″iTrial %d error=%g\n″,iTrial,squared_norm);*//*keep the best solution so far*/for(j=0;j<nCols;j++){best_solution[j]=solution[j];}}}/*determine boundary for rejection of outliers*/boundary=min_error*SquaredThreshold/(initialRows-1);/*remove outlying groups of equations from Mat*/(*outMatRows)=0;iRows=0;iGroup=0;for(i=0;i<nSizes;i++){for(j=0;j<nGroups[i];j++){/*accumulate the norm of the whole group*/squared_norm=0.0;for(k=0;k<Sizes[i];k++){entry=0.0;for(l=0;l<nCols;l++){entry+=Mat[iRows+k][l]*best_solution[l];}squared_norm+=entry*entry;}WO 96/34365iGroup++;if(squared_norm<Sizes[i]*boundary){/*add Sizes[i]equations*//*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxprintf(″%d of kind %d is taken\n″,j,i);xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/if((*outMatRows)=iRows){/*there is no need to copy the equations*//*yet(*outMatRows)should be updated*/(*outMatRows)+=Sizes[i];}else{for(k=0;k<Sizes[i];k++){for(l=0;l<nCols;l++){Mat[(*outMatRows)][l]=Mat[iRows+k][l];}(*outMatRows)++;}}}iRows+=Sizes[i];}}free_dmatrix(subMat,0,minRows+maxSize-1-1,0,nCols-1);free_dvector(solution,0,nCols-1);free_dvector(best_solution,0,nCols-1);free_ivector(from_row,0,nTotalGroups-1);free_ivector(to_row_plus1,0,nTotalGroups-1);printf(″after outliers removal only %d out of %d equations\n″,(*outMatRows),initialRows);return(TRUE);}附件B
> TT[j+2,10]=evalm(-p[1,i])> TT[j+2,11]=evalm(-p(2,i]);> TT[j+2,12]=-1> TT[j+2,16]=evalm(ppp[1,i]*p[1,i])> TT[j+2,17]=evalm[ppp[1,i]*p[2,i]) > TT[j+2,18]=evalm(ppp[1,i])> TT[j+2,19]=evalm(pp[2,i]*p[1,i])> TT[j+2,20]=evalm(pp[2,i]*p[2,i])> TT[j+2,21]=evalm(pp[2,i])> TT[j+2,25]=evalm(-ppp[1,i]*pp[2,i]*p[1,i])> TT[j+2,26]=evalm(-ppp[1,i]*pp[2,i]*p[2,i])> TT[j+2,27];=evalm(-ppp[1,i]*pp[2,i])> TT[j+3,13]=evalm(-p[1,i])> TT[j+3,14]=evalm(-p[2,i])> TT[j+3,15]=-1> TT[j+3,16]=evalm(ppp[2,i]*p[1,i])> TT[j+3,17]=evalm(ppp[2,i]*p[2,i])> TT[j+3,18]=evalm(ppp[2,i])> TT[j+3,22]=evalm(pp[2,i]*p[1,i])> TT[j+3,23]=evalm(pp[2,i]*p[2,i])> TT[j+3,24]=evalm(pp[2,i])> TT[j+3,25]=evalm(-ppp[2,i]*pp[2,i]*p[1,i])> TT[j+3,26]=evalm(-ppp[2,i]*pp[2,i]*p[2,i])> TT[j+3,27]=evalm(-ppp[2,i]*pp[2,i])> j=j+4> od> b=-col(TT,27)> TT=submatrix(TT.1..40,1..26)> sol=leastsqrs(TT.b)> X=vector(27,i->1)> for i from 1 to 26 do X[i]=sol[i];od> alpha=array(1..3,1..3,1..3)> for i from 1 to 3 do> for j from 1 to 3 do> for k from 1 to 3 do> alpha[i,j,k]=X[k+(i-1)*9+(j-1)*3];> ododod> E1=matrix(3,3)> E2=matrix(3,3)> E3=matrix(3,3)> for i from 1 to 3 do> for k from 1 to 3 do> E1[i,k]=alpha[i,1,k]> E2[i,k]=alpha[i,2,k]> E3[i,k]=alpha[i,3,k]> odod>> W1=matrix(3,3)> W2=matrix(3,3)> W3=matrix(3,3)> for j from 1 to 3 do> for k from 1 to 3 do> W1[j,k]=alpha[1,j,k]> W2[j,k]=alpha[2,j,k]> W3[j,k]=alpha[3,j,k]> odod>> end
>
> fnd_matrix=proc(M1,M2,M3)> Test=matrix(18,9,i->0)> for i from 1 to 3 do> Test[1,i]=col(M1,1)[i];Test[2,i+3]=col(M1,2)[i];Test[3,i+6]=col(M1,3)[i];> Test[4,i]=col(M1,2)[i];> Test[4,i+3]=col(M1,1)[i];> Test[5,i]=col(M1,3)[i];> Test[5,i+6]=col(M1,1)[i];> Test[6,i+3]=col(M1,3)[i];> Test[6,i+6]=col(M1,2)[i];> Test[7,i]=col(M2,1)[i];> Test[8,i+3]=col(M2,2)[i];> Test[9,i+6]=col(M2,3)[i];> Test[10,i]=col(M2,2)[i];> Test[10,i+3]=col(M2,1)[i];> Test[11,i]=col(M2,3)[i];> Test[11,i+6]=col(M2,1)[i];> Test[12,i+3]=col(M2,3)[i];> Test[12,i+6]=col(M2,2)[i];> Test[13,i]=col(M3,1)[i];> Test[14,i+3]=col(M3,2)[i];> Test[15,i+6]=col(M3,3)[i];> Test[16,i]=col(M3,2)[i];> Test[16,i+3]=col(M3,1)[i];> Test[17,i]=col(M3,3)[i];>> Test[17,i+6]=col(M3,1)[i];> Test[18,i+3]=col(M3,3)[i];> Test[18,i+6]=col(M3,2)[i];> od> b=-col(Test,9)> Test=submatrix(Test.1..18,1..8)> sol=lesstsqrs(Test,b)> X=vector(9,i->1)> for i from 1 to 8 do X[i]=sol[i];od> F=matrix(3,3)> for i from 1 to 3 do> for j from 1 to 3 do> F[i,j]=X[i+(j-1)*3];> odod> end
>> skew_cross=proc(w)> stack(evalm(crossprod([1,0,0],w));stack(evalm(crossprod(
,w)),evalm(cro> ssprod(
,w))));> end>
> get epipole from F^tv′=0> vp_from_F=proc(F)> G=transpose(F)> b=-col(G,3)> G=submatrix(G,1..3.1..2)> sol=leestsqrs(G,b)>> vp_est=vector(3,i->1)> vp_est[1]=sol[1]vp_est[2]=sol[2]> end
> get_Image_points=proc()> randn=rand(1..100)> R=rot_mat(0.9,
)> Rp=rot_mat(0.9,[2.3,0.7,1.1])> vpp=vector(3,[1.1,3.3,1.0])> vp=vector(3,
)> p=matrix(4,10)> for i from 1 to 3 do> for j from 1 to 10 do> p[i,j]=randn()/10;> odod> for j from 1 to 10 do> p[4,j]=1;> od> A=augment(R,vp)> B=augment(Rp,vpp)> p=evalm(submatrix(p,1..3.1..10))> pp=evalm(A &*P)
> b=-col(T,16)> T=submatrix(T,1..15,1..15)> sol=linsolve(T,b)> X=vector(15,l->1)> for i from 1 to 15 do X[l]=sol[i];od> T=matrix(4,4)> for i from 1 to 4 do> for j from 1 to 4 do> T[i,j]=X[j+(i-1)*4]> odod> end>
>> getk=proc(a,b,c)> evalm((transpose(crossprod(a,b))&*> crossprod(c,s))/(transpose(crossprod(c,a)) &*crossprod(c,a)));> end>
> rot_mat=proc(angle,w)> w_unit=evalm((1/norm(w,frobenius))*w);> WW=evalm(w_unit &*transpose(w_unit))> cos_mat=evalm(cos(angle)*array(identtty,1..3,1.3));> W_antisym=stack(evalm(crossprod([1,0,0],w_unlt)),stack(evalm(crossprod(
,w_unit)),evalm(crossprod(
,w_unit))));> evalm(cos_mat+sin(angle)*W_antlsym+(1-cos(angle))*WW);> end
> cross_mat=proc(w)> evalm(stack(evalm(crossprod([1,0,0],w_unit)),stack(evalm(crossprod(
,w> _unit)),evalm(crossprod(
,w_unit)))));> end
權利要求
1.為由一3D對象的至少一2D投影生成關于此3D對象的信息的方法,此方法包括提供一3D對象的至少一2D投影;產生以αijk=vi′bjk-vj″aik(i,j,k=1,2,3),描述的數(shù)的陣列,其中aij和bjk分別為矩陣A和B的陣元及vi′和vi″分別為向量v′和v″的元素,而所述矩陣和向量共同說明此3D對象的三個視圖的攝象機參數(shù);和利用此陣列生成關于此3D對象的信息。
2.為由一3D對象的具有n個對應點pi和pi′(i=1……n)的第一和第二現(xiàn)有的視圖產生此3D對象的一新視圖的方法,此方法包括產生一張量αijk;及將點pi和pi′(i=1……n)的值插入到三線性公式,由此來提取表示此新視圖中一位置的x″,y″值;和根據(jù)插入步驟的結果生成新的視圖。
3.為由一3D對象的至少一2D投影再現(xiàn)此3D對象的方法,此方法包括提供一3D對象的至少一2D投影;產生一以αijk= vi′bjk-vj″aik(i,j,k=1,2,3),描述的數(shù)的陣列,其中aij和bjk分別為矩陣A和B的陣元及vi′和vi″分別為向量v′和v″的元素,而所述矩陣和向量共同說明此3D對象的三個視圖的攝象機參數(shù);將此陣列置換成與3D空間中的三個對應平面相關的三個單應性矩陣;和利用此三個單應性矩陣再現(xiàn)此3D對象。
4.一光學識別方法,包括提供一3D對象的相互間存在一三線性關系的三個透視圖;和利用視圖之間的三線性關系以便由對準來進行光學識別。
5.按照權利要求4的方法,還包括再投影此3D對象。
6.按照權利要求1的方法,其中所述關于3D對象的信息包括3D對象的再現(xiàn)。
7.按照權利要求1的方法,其中所述關于3D對象的信息包括至少一個未作再現(xiàn)3D對象而產生的3D對象的新視圖。
8.按照權利要求1的方法,其中所述至少一2D投影包括至少一航空照片。
9.按照權利要求1的方法,其中所述至少一2D投影包括至少一衛(wèi)星照片。
10.按照權利要求1的方法,其中所述關于3D對象的信息包括至少一3D對象的座標。
11.按照權利要求1的方法,其中此3D對象包括宇宙空間對象。
12.按照權利要求1的方法,其中此3D對象包括很大的對象如一船舶。
13.按照權利要求1的方法,其中此3D對象包括不實在的對象。
14.為由一3D對象的至少一2D攝影產生關于此3D對象的信息的設備,該設備包括為提供一3D對象的至少一2D投影的設備;運行產生以αijk=vi′bjk-vj″aik(i,j,k=1,2,3),描述的數(shù)的陣列的陣列發(fā)生器,其中aij和bjk分別為矩陣A和B的陣元及vi′和vi″分別為向量v′和v″的元素,而所述矩陣和向量共同說明此3D對象的三個視圖的攝象機參數(shù);和利用此陣列產生關于此3D對象的信息的陣列分析器。
15.為由一3D對象的具有n個對應點pi和pi′(i=1……n)的第一和第二現(xiàn)有的視圖產生此3D對象一新視圖的設備,該設備包括為產生一張量αijk的設備;和為將點pi和pi′(i=1……n)的值插入成為三線性形式的設備,由此提取表示新視圖中一位置的x″,y″值;和為根據(jù)插入步驟的結果產生新視圖的設備。
16.為由一3D對象的至少一2D投影再現(xiàn)此3D對象的設備,該設備包括為提供一3D對象的至少一2D投影的設備;運行來產生一以αijk=vi′bjk-vj″aik(i,j,k=1,2,3),描述的數(shù)的陣列的陣列發(fā)生器,其中aij和bjk分別為矩陣A和B的陣元及vi′和vi″分別為向量v和v″的元素,而所述矩陣和向量共同說明3D對象的三個視圖的攝象機參數(shù);為將此陣列置換成為與3D空間中的三個對應平面相關的三個單應性矩陣運行的陣列置換器;和利用此三個單應性矩陣再現(xiàn)此3D對象運行的3D對象再現(xiàn)器。
17.視覺識別設備,包括為提供一3D對象的相互間存在有三線性關系的三個透視圖的設備;和利用此視圖間三線性關系以便由對準來進行視覺識別的設備。
18.按照權利要求1的方法,其中所述至少一2D投影包括三個2D投影。
19.按照權利要求14的設備,其中所述至少一2D投影包括三個2D投影。
20.按照權利要求1的方法,還包括利用所述方法的結果來進行進行生產部件的座標測量。
21.按照權利要求1的方法,還包括利用所述方法的結果來進行生產部件的自動光學檢驗。
22.按照權利要求1的方法,還包括利用所述方法的結果來進行機器人單元校準。
23.按照權利要求1的方法,其特征是還包括利用所述方法的結果來進行機器人軌跡識別。
24.按照權利要求1的方法,還包括利用所述方法的結果來進行3D機器人反饋。
25.按照權利要求1的方法,還包括利用所述方法的結果來進行景象的3D模擬。
26.按照權利要求1的方法,還包括利用所述方法的結果來進行對象的3D模擬。
27.按照權利要求1的方法,還包括利用所述方法的結果來進行反向工程。
28.按照權利要求1的方法,還包括利用所述方法的結果來進行3D數(shù)字化。
29.3D景象再現(xiàn)方法,用于由一3D景象的第一、第二和第三視圖產生此3D景象的3D表示,此方法包括提供一3D景象的第一、第二和第三視圖;利用關于所述第一、第二和第三視圖的幾何信息產生一表示第一、第二和第三視圖之間的幾何關系的三線性張量;和由所述三線性張量產生3D景象的3D表示。
30.按照權利要求29,其中所述產生3D表示的步驟包括按此三線線張量計算第一和第二視圖的表射偏振幾何表示;和由所述表射偏振幾何表示生成所述3D表示。
31.圖象變換設備,為由一3D景象的第一和第二參考視圖產生此3D景象的新視圖,此設備包括為提供一3D景象的第一和第二參考視圖的設備;一三線性張量發(fā)生器,運行來分別利用關于所述第一參考視圖、第二參考視圖和新視圖的幾何信息產生表示第一、第二和新視圖之間的幾何關系的三線性張量;和一新視圖發(fā)生器,運行來以根據(jù)所述第一和第二參考視圖中的第一和第二對應位置和所述三線性張量計算多個各自分別對應于不同的所述第一和第二對應位置的新視圖位置產生所述新視圖。
32.3D再現(xiàn)設備,為由一3D景象的第一、第二和第三視圖產生此3D景象的一3D表示,該設備包括為提供3D景象的第一、第二和第三視圖的設備;一三線性張量發(fā)生器,運行來利用關于所述第一、第二和第三視圖之間的幾何關系來產生表示所述第一、第二和第三視圖之間的幾何關系的三線性張量;和3D景象表示發(fā)生器,運行來由所述三線性張量產生3D景象的3D表示。
33.按照權利要求29的方法,所述提供步驟包括提供3D景象的m>3的視圖,且所述利用步驟對m個視圖中的多個3視圖的子集的每一個進行,由此來產生多個中間張量,此方法還包括在所述產生步驟之前將此多個中間張量組合成最終的三線性張量,所述產生的步驟包括由所述最終的三線性張量生成3D景象的3D表示。
34.按照權利要求33的方法,其中所述利用步驟對第一和第二視圖結合每一其余的視圖進行,由此產生m-2個中間張量。
35.按照權利要求33的方法,其中所述組合步驟包括將每一中間張量排列在一對應的9×3(m-2))矩陣中;和將此最終的三線性張量定義作為所述矩陣的四個最大的基本成份。
36.匹配點求取設備,為尋求三個視圖之間的匹配位置,此設備包括提供三視圖之間的一初始匹配位置組;根據(jù)所述初始組產生表示所述三視圖間的關系的三線性張量;和利用三線性張量產生一最終的匹配位置組。
37.按照權利要求36的設備,其中所述利用步驟包括對三視圖的第一視圖中多個位置的每一個由張量產生各自與其余二個視圖相關的第一第二對應的表射偏振線;沿第一表射偏振線選擇一第一候選匹配位置,并根據(jù)第一匹配位置計算沿第二表射偏振線的第二候選匹配位置;和重復選擇步驟直至此二候選匹配位置與第一視圖位置相符。
38.按照權利要求29的方法,還包括對3D表示進行表面插補,由此來產生作表面插補的輸出;和由作表面插補的輸出產生正射投影照片。
39.按照權利要求29的方法,其中所述提供的步驟包括順序地在景象內的一序列位置上定位至少三個成象裝置,在此序列內的每一位置利用每一個成象裝置形成此景象的至少一部分的圖象。
40.按照權利要求29的方法,還包括將3D景象的3D表示與所存貯的此3D景象的模型進行比較。
全文摘要
用于由一3D對象的至少一2D投影產生關于此對象的信息的方法。此方法包括提供一3D對象的至少一2D投影(40),產生一以aijk=vi′bik-vj″ajk(i,j,k=1,2,3)描述的數(shù)陣列(50、60),其中ajk和bjk分別為矩陣A和B的元而vi′和vj′分別為向量v′和v″的元素,而矩陣(50)和向量60一起表述此3D對象的三個視圖(102)的攝象機參數(shù),并利用此矩陣來產生有關此3D對象(70)的信息。
文檔編號G01B11/00GK1198230SQ96194705
公開日1998年11月4日 申請日期1996年4月24日 優(yōu)先權日1995年4月25日
發(fā)明者阿姆農·沙舒阿 申請人:考格內特恩斯有限公司