關於Homography的一些思考

2021-09-27 09:01:43 字數 2066 閱讀 3118

參考:

南京師大 高等幾何 第19課 25』

追根溯源,還是去看高等幾何/解析幾何吧。

對於乙個二維射影homography 3*3矩陣

h =[

h11h12

h13h21

h22h23

h31h32

h33]h = \left[ \begin h_ & h_ & h_ \\ h_ & h_ & h_ \\h_ & h_ & h_ \end \right]

h=⎣⎡​h

11​h

21​h

31​​

h12​

h22​

h32​

​h13

​h23

​h33

​​⎦⎤

​雖然有9個元素,但並不是要求出每乙個元素具體的值,而只需要得到這些元素的比例關係即可,得到比例關係就確定了homography,因此就減去了乙個自由度。

那麼假如h33≠

0h_ \neq 0

h33​​

=0,一種將h

hh進行引數歸一化的方法就是可以將每乙個元素除以h

33h_

h33​

,經過這樣的處理,原本的h

33h_

h33​

就變為了1,剩下的是8個未知的比值,只要求解出這8個比值即可,即8個自由度。其實理論上也不一定要用h

33h_

h33​

,雖然一般都用這個,畢竟其他元素還挺有可能為0的。

btw,what if h33=

0h_ = 0

h33​=0

?如果將方程列出來,可以發現這是乙個將(0,

0,w)

(0,0,w)

(0,0,w

)點(也就是原點)對映到(x,

y,0)

(x,y,0)

(x,y,0

)點(也就是無窮遠點)的射影。然而恕餘愚鈍,並想象不出這會是個什麼樣的射影。

除了以h

33h_

h33​

作為乙個「基準值」來進行歸一化,還有一種方式是以∑hi

j2=1

\sum h_^2 = 1

∑hij2​

=1作為約束,或者說是以(∑h

ij2)

1/2=

1(\sum h_^2)^ = 1

(∑hij2

​)1/

2=1作為約束,也就是矩陣的l2範數或者又稱euclidean範數 or frobenius範數。這就是以矩陣的「長度」作為基準值進行歸一化。

由於homography的dof為8,因此認為用4對點即可求解出乙個homography。

再回到高等幾何中,有這樣的定理:

任一二維射影對應可由已知四對對應點(每一方四點中無三點共線)唯一確定。

因此在計算機視覺中採用4對點去確定乙個homography在數學上是有依據的!

作為乙個完美主義強迫症患者表示對這個結果感到很滿意。

參考:projective transformations

假設w =1

w=1w=

1是射影平面,ax+

by+c

1=0ax+by+c_1=0

ax+by+

c1​=

0 和 ax+

by+c

2=0ax+by+c_2=0

ax+by+

c2​=

0是該平面上的兩條平行線,怎麼理解這兩條平行線的交點是無窮遠點呢?

注意到射影平面上的每乙個點都與3d空間中過射影中心的一條直線相對應,那麼這兩條平行線也就分別對應於3d空間中的兩個平面,而這兩個平面的交線,也就是w=0

w=0w=

0 這個平面上的直線ax+

by=0

ax+by=0

ax+by=

0,根據射影幾何中的定義,這條直線便與無窮遠點相對應。

關於RemoteView 的一些字型的一些問題

最近在做乙個 在notification 新增 天氣通知的小部分 發現困擾在 如何給 remoteview 中的字型 作修改 大家都知道 textview 設定字型 在xml 中 可以 設定 3種 而其他字型的設定 需要通過 typeface 去設定 具體 將字型放置在asset 資料夾中 type...

關於Thread的一些

執行緒有幾種狀態 1.產生 new 執行緒已經產生,只是放在記憶體中啥事都不幹。2.可執行 runnable 在呼叫了start方法到它獲得系統給它分配了時間片之前,或者時間片用完了但還沒執行完。3.執行 running 獲得了時間片,正在執行。4.死亡 dead 執行完成 5.阻塞 block 不...

關於SpannableString的一些用法

因為專案中有用到spannablestring,所以稍微寫了一下,有參考 如果需要詳盡的可以去鏈結部落格裡看看 分別有 spanned.span exclusive exclusive 前後都不包括 spanned.span inclusive exclusive 前面包括,後面不包括 替換 spa...