如何測算出任一副圖片中的物體的實際尺寸?

比如我想知道這個書架每一格的高寬,有辦法嗎?沒有什麼神奇的軟體可以幫忙?


第一次回答就上知乎日報了,萬分榮幸,把答案改的更簡潔明了,方便更多的人學會操作
———————————————————————————————————————————最後的結果
正立面與側立面尺寸

(那幾塊突出來的木板我就忽略掉了)
同樣是使用sketchup,我把過程說的詳細一些
使用照片匹配功能
確定紅綠兩軸

點擊右下的完成(done)按鈕,保持視角不變,現在的視角和焦距與照片中相同

推拉出書架的厚度

右鍵點擊場景選項卡,選擇最底下的投影照片(project photo)

於是照片投影到了剛才畫的立方體上面,看起來是不是很立體?
當然到這一步就已經可以對垂直高度進行測量了,不過不著急,我們還是做得更專業一點

這個時候你就可以直接把這張貼圖單獨處理(make unique texture)單獨保存成一張圖片,然後倒入cad就可以根據參照比例標註數據了。
如果你想要弄的更準確一些的話
———————————————————————————————————————————
回到投影照片之前的一步,向後推出柜子的深度,我就不全畫了,畫幾個做個示範

你看現在已經是有縱深的柜子了(當然,由於是投影,有一部分是沒有貼圖的)

用標註工具量一下桌面高度,恩,932.4mm,這一步就比較關鍵了,很多人說照片比例都不知道怎麼弄
用標尺(快捷鍵T)量一下桌面高度,量後不做別的操作,直接鍵盤敲710(取常見桌面高度為710mm~750mm)

會出現提示問是否縮放整個模型,點擊「是」(好奇怪英文版的對話框竟然有中文,這應該是因為用的中文windows的緣故。。。)

so,桌面高度這時候就是720mm了,接下來你想知道什麼數據那就自己量吧~,或者直接導入CAD標註個平面立面圖什麼的也行

放個真實比例的人進去看看,恩,差不多,完成

PS.sketchup中的照片匹配只適用於兩點透視的照片,由於z方向的藍軸是由紅綠兩軸決定,所以很難對三點透視的照片進行適配,如果一定要配,先到PS調成兩點透視
比如這張金茂大廈和上海金融中心的照片,變形嚴重

直接推拉粗來是顯然不行的

實際上那種沒辦法直接照片匹配的圖片要怎麼弄呢?那就需要一些手藝和眼力,對著照片建模吧,跟繪畫臨摹一樣一樣的

實際上咱也不用這樣揪心用這種方法量尺寸,大部分人造物都是跟人的尺寸相協調的,門一般2100mm高對吧,大概憑眼力毛估估一下,一部分尺寸還是能出來的。
我只能說怎麼做,至於為什麼這樣做,下面已經有人答了
畢竟原圖是張渲染圖,用照片匹配的方法還原回去是最合適不過了:D


從一幅圖像中無法測出物體的長度,因為缺乏參照物,但可以測出兩個平行物體的長度比例。如果已知一個物體的實際大小(比如在圖片中放上一枚1元硬幣或者知道某個柜子有多高),那麼就可以通過長度比和參照物的已知長度測出物體長度。具體方法見文獻[1],因為需要一些矩陣運算和攝像頭成像方面的推導,這裡只大概說說原理。樓上諸位所述也是這種原理。


圖像測量利用了攝像頭成像也就是小孔成像的幾個性質[2]:
第一,攝像頭把平行的直線映射為圖像上相交直線,筆直的鐵軌在遠處相交就是這個道理,這個交點被稱為消隱點(vanish point)。可以認為平行空間直線在無窮遠處相交,消隱點則是這一交點的像。所有水平的平行直線族都各自相交於無窮遠處的一點,這些點構成無窮遠直線,這條直線在圖像上的像叫地平線。我們所居住的三維空間中存在三組相互垂直的直線(例如水平兩組,x軸和y軸方向,豎直一組,z軸方向),所有x、y、z方向上的平行直線在一張圖片上會分別相交於各自的一個消隱點。並且水平直線對應的兩個消隱點如果連起來,連線就是地平線。測量的關鍵,就是要得到這些消隱點,因此有很多豎直線(如書架)或水平線(如地板磚)的圖片就容易測量。

第二,攝像頭把三維空間投影到二維的圖像上,保持直線交比不變,交比是四個點兩兩「比例的比例」。所以如果在三維空間中的一條直線上有四個點,那麼它們映射到圖片上的四個點後,這四個點的交比不變。

文獻[1]通過這些條件,給出了從圖片上計算長度比的公式。通過示意圖我們可以更加直觀地看出它是如何工作的:

首先,假設我們已知藍色小人Bob的身高,要求出紅色小人John的身高,只需要知道兩人的身高比值就可以:

我們用大寫字母表示真實的坐標,隨後用小寫字母表示圖片上的像素坐標。兩人的身高比值BE/AF可以這麼求:首先連接AB,然後過E點做AB的平行線交AF於點D,因為ABED是個矩形,所以要求的比值就等於AD/AF。然而,這種判斷是在三維空間中做出的,當物體成像為圖片,所有點的位置都會發生變化(不要問我圓頭為什麼會變成方頭):

其中最顯著的變化是平行線相交了,由此我們可以找到三個方向的消隱點,這可以通過對豎直和兩組水平平行線求延長線獲得:

注意我們把水平平行線對應的兩個消隱點連接起來,得到了一條在(無窮)遠處的直線,每個人都熟悉它,它就是地平線。地平線上所有的點都有一個性質:從其上一個點引出的所有直線都是相互水平平行的。

因此點D在圖上的坐標d是這麼求出的:
1. 畫出地平線
2. 延長ab,交地平線於點c
3. 延長ce,交af,也就是John於點d
因為點c在無窮遠處,所以cd和ca在空間中是平行直線,abed也就是上面說述真實空間中矩形ABED的像。

然而,知道了某些點在圖像上的像,它們的實際長度比是無法直接從圖上測得的,因為大家的深度不一樣,這時就要利用成像前後一條直線上四個點交比不變的性質,考察紅色小人John身上的三個點A、D、F以及其延長到無窮遠處的點G,就可以得到(大寫字母換成小寫字母):
(AD/AF)/(GD/GF)=(ad/af)/(gd/gf)
因為已經求出了點d,等式右邊所有的量都可以從圖像上測出。等式左邊的點G在真實空間是所有垂直直線的交點,這個點在無窮遠,和無窮相比點F和點D的差異可以忽略不計,所以GD/GF=1,這樣就得到最終結果:
AD/AF = (ad/af)/(gd/gf)

[1] Criminisi A, Reid I, Zisserman A. Single view metrology[J]. International Journal of Computer Vision, 2000, 40(2): 123-148.
[2] Hartley R, Zisserman A. Multiple view geometry in computer vision[M]. Cambridge university press, 2003.


PS: 有知友指出的image rectification概念其實是雙目視覺中的一個專有概念,假如有兩幅圖像拍攝的物體相同,但是攝影師站位不同,一左一右,通過某種變換可以對兩幅圖像分別做一個變換,(近似)讓左邊這幅圖像上每一行的每一個像素點代表的物體上的點在右邊那副圖像上的像點也恰好在右圖的同一行,這種變換過程叫做image rectification。其作用是為了隨後計算視差圖方便。


如果你無法知道這個場景中的任何一個物體的實際尺寸和擺放方式,那麼是不可能知道圖片中的物體的實際尺寸的。

換句話說,你需要在圖片中找一個已知實際尺寸的參照物,否則是不可能的。因為沒有參照物,我完全可以說它是個小模型。

從網上隨便爬了張圖

在機器視覺的研究中,通常我們會在場景中放這樣的方格紙,它們的尺寸是已知的,接下來就可以讓計算機來算整個場景中的其它物體的尺寸了。


室內設計有一些常理可以參考,還請專業人員回答。
如果不針對室內設計,我補充一下,最好有多角度的照片。
靠單張照片做測量,是教主的偽科學,由於 forced perspective 現象,無論如何都不靠譜。

http://marciokenobi.wordpress.com/2011/12/05/forced-perspective/
http://en.wikipedia.org/wiki/Forced_perspective通過多角度的照片,現在已經有大致還原三維場景的技術,比如 http://en.wikipedia.org/wiki/Photosynth,http://www.photosynth.net/,配合參照物可大致測量。


簡單來說,是可以的。

這裡面有兩個問題。
一是缺少實際尺寸,只能得到比例。
二是透視投影(perspective projection)帶來的扭曲。

第一個問題只能靠猜,比如你感覺一本書多大啊,架子多高啊,什麼的。
第二問題叫rectification。效果如下:

簡單來說,一般是輸入垂直(或者平行)的兩條線,找到消隱點(vanlishing point),就能得到相機的焦距,做rectification。
google到的一個軟體,但我沒用過。http://download.cnet.com/Photogrammetric-Image-Rectification/3000-18496_4-75325380.html

做到這一步,測量距離什麼的就容易了。SketchUp那個看起來挺智能的。用的什麼原理,我就不知道了~


只能推算出比例,無法獲得絕對大小,當然如果能知道圖中個別物件的具體尺寸,還是可以換算出其大小的。

這是義大利 Tumidei 公司 2012 年設計的一個室內效果圖。

這是原圖:

導入sketchup:使用照片適配(調整紅軸和綠軸,以及原點的位置):

3D建模:

這樣就可以了;
再上一張正視圖:


我認為只根據一張透視圖,物體形狀都不能確定,更別說其它信息了。
曾在某建築論壇上否定過某「建築師」的「透視圖反演平面

」的謬論,如下:
圖一:

圖二:

圖三:結論

圖一和圖二的同異是:滅點相同,視點高度相同,視點在圖中X軸向的位置相同,所成透視相同,真實平面形狀大小不同,其原因是視點與成像畫面的距離不同。


你會用AutoCAD嗎?如果會的話,可以導入到CAD里,然後選擇圖片中尺寸比較常見的物品,作為參照物,等倍放大或縮小圖片,直接用CAD量度測量物,再根據你的參照物與測量物的遠近,確定最終的尺寸。
只要幾個尺寸確定了,再根本物品的長寬比例估算嘛,那些室內設計師經常這樣乾的,要不怎麼看著效果圖把施工圖畫出來呀。下圖是我按上述方法,再經過估算的尺寸,八九不離十吧。


大家都說沒有參照物,其實樓層高度就是呀。假設樓高為2.7米,書架上下一共七層,書架頂端離天花板的距離大約等於一層高度。折算一下就好了。
不過只能估計高度,不能估計寬度。

關於書的尺寸樓的層高哪個用來估算更準確的問題 @仇千尺

1.層高

層高為上下兩層樓面或樓面與地面之間的垂直距離。也就是一層房屋的高度。在1987年發布的《住宅建築模數協調標準》中,明確規定了磚混結構住宅建築層高採用的參數為:2.6米、2.7米、2.8米。
住宅的高度計量除了用「米」,還可用「層」來計算,每一層的高度在設計上有一定要求,稱為層高。層高通常指下層地板面或樓板面到上層樓板面之間的距離。層高減去樓板的厚度的差,叫做凈高。出於降低成本、節約建材、節約土地等考慮,一般住宅層高都在2.8米左右。

以上來自百度百科。
層高一般為2.8米,去掉樓板厚度後的凈高我假設為2.7米。

2.書的尺寸

在百度上隨手搜的圖書館書架的照片。仔細看,書的大小是不是不太一樣?
比較舊的書(20年前出版的那種,圖片上書脊發黃的)一般用標準的32開和16開,但近些年的圖書很多已經不用32開和16開這種尺寸了,長和寬都有很多種尺寸。擺在書架上就上上面的圖片一樣參差不齊。
我大概每一兩個月去一次圖書館,每次借回來的幾本書都是大小不一的。


你需要一個已知大小或者尺寸,要不然你就只能推測比例關係在一個未知scale上。


用樓層高度,大致估計下


可以加一個參考物


感覺需要用到雙目立體視覺知識,stereo


桌面上有個筆記本 看著可以作為參照物


這個書櫃就是一塊板子的高度 2.44m吧 哪位客戶這麼折磨你 不可能畫出一樣的啊 去掉掃腳線8cm 板子看著寬度像在3厘米左右 你在均分一下OK 。


一定需要一個定量的參考物吧。。


這個問題要是有100%有效的定解,韓寒身高問題早就解決了


大家最關心的還是參照物的問題了,其實我覺得,那些書就是參照物了。書當然具體的開本不知道,但是你把你家最常見的開本,對應圖片的,可以得到一個大概!然後可以通過測量筆記本電腦屏幕的尺寸進行驗證。筆記本無非就是那幾個尺寸,只要你算的比例正好在正常範圍內,那應該是OK的吧!至於其他什麼的,大家說的很清楚了。


置頂的用sketchup的那個是在搞笑么,連圖片被縮放的比例都不知道建模有什麼用。必須要在圖片中人為的放置一個 棋盤型定標板,然後先camera calibration 再 3D reconstruction.


沒有這個書架總的長寬高或者類似數據肯定是算不出的,比例可以用ps或ai或fl簡單作圖後算。


推薦閱讀:

斑馬是在白底上長的黑條,還是在黑底上長的白條?
有哪些比較小眾的成語?
有哪些讓你覺得神奇的冷知識?
哪些古代名人有不為人知的一面?
你看到過哪些有意思的地圖?

TAG:設計 | 軟體 | 圖像處理 | 圖片 | 冷知識 | 計算機視覺 | 測量 |