2011-09-28 23 views
4

是否有人知道圖像分析算法,通過該算法,我可以確定一個房間有多大(大約是現實生活中的測量值,比如說以米爲單位的寬度)一個(或多個)這個房間的錄像?從視頻輸入中確定房間大小的算法

我目前使用OpenCV作爲我選擇的圖像庫,但是在學習圖像分析算法方面我還沒有得到很大的進展,只是名字下降會很好。

感謝

編輯:好了,澄清一點我剛剛從參與的人了。我基本上無法控制如何拍攝視頻,並且無法保證有多個數據源。然而,我在房間裏有一定的積分位置,我應該在這個位置放置一些東西。因此,我可能會試圖找出房間的邊緣,然後確定房間中給定位置的多大程度,然後猜測房間的大小。

+0

我不確定沒有參考框架就可以完成。而找到房間的邊緣本身就是一個難題。 –

+3

這根本不是一個簡單的問題。你需要能夠完全自主地做到這一點嗎?如果可以的話,您將有更多的運氣,例如,讓用戶在房間中查找功能,並使用圖像處理和相機校準信息進行外插。如果攝像頭正在移動,可能會查看「運動結構」。無論如何,除非圖像中存在已知大小的東西,否則您將只知道比例因子;即5×10,10×20,20×40等。 – dantswain

+0

你對圖像的收集方式有任何控制嗎? – AShelly

回答

4

非常困難(但有趣!)的問題。

如果您想以完全自動化的方式進行此操作,我認爲您會遇到很多問題。但是,如果操作員可以在一組圖片中標記控制點,我認爲這是可行的。

您的問題可以更一般地說是找到3D空間中兩個點之間的距離,當您從兩個或兩個以上的2D圖片中獲取這些點的位置時,從不同的角度來看。這個過程將或多或少的像這樣:

  • 圖片將帶有相機的位置和方向信息。例如,假設您獲得兩張照片,具有相同的照相機方向,並且兩張照片是在水平方向相距三英尺的情況下拍攝的。您必須爲攝像機所在的三維空間定義一個參考原點,例如,您可以說左圖像的攝像機位於(0,0,0),右圖像位於(3,0, 0),並且兩者都將面向前方,這將是(0,0,1)的方向。或類似的東西。
  • 現在,操作人員在兩張照片中標出房間的兩個角落。因此,每個角落都有2組二維座標。
  • 您必須知道相機和鏡頭的細節(視場,鏡頭失真,像差等)。關於相機如何使圖像變形的知識越多,您可以更準確地進行估算。這是全景拼接軟件做的相同的東西,以實現更好的針跡。有關此信息,請參閱PanoTools
  • 這裏有趣的部分:你現在將爲每個2D點做一個perspective projection的反演。透視投影需要3D空間中的點和相機定義並計算2D點。這用於表示平面中的三維物體,如電腦屏幕。您正在做相反的事情,對於每個2D點,​​您將嘗試獲取3D座標。由於2D點中沒有足夠的信息來確定深度,所以從單個2D點可以做的最好的方法是在3D空間中獲取穿過鏡頭和相關點的線,但是您不知道重點離鏡頭有多遠。但是,您在兩張圖像中具有相同的二維點,因此您可以從不同的相機位置計算兩條三維線。這些線不會平行,所以它們會在一個點上相交。 3D線的交點將是空間中3D點的位置以及參考攝像機3D空間的座標的良好估計。
  • 其餘的很容易。當您具有兩個興趣點的估計3D位置時,您只需計算它們之間的3D distance,這就是您想要的數字。

很容易吧?

+1

如果您具有相機的位置和方向,這意味着您的相機操作員已知道該任務並且正在攜帶測量儀器。在這些情況下,我寧願指示他/她測量房間,而不是:) –

+0

當然,但請注意,攝影師不需要知道很多,只要他可以拍攝兩張照片(或一個視頻)與相機面臨向前和相機行進的距離可以估計。這是所有的估計,輸入數字越好,距離估計就越準確。 – Miguel

+0

不幸的是,我不能認爲至少會有兩個視頻源。 – fk2