เมทริกซ์การแปลงและเมทริกซ์ของกล้องเปลี่ยนไปอย่างไรเมื่อสร้างดัชนีพิกเซลจาก -1 เป็น 1 แทนที่จะเป็น 0 ถึง N-1

Aug 20 2020

ฉันกำลังพยายามบิดเฟรมเพื่อสังเคราะห์มุมมอง โดยเฉพาะเมื่อพิจารณาจาก frame1 และ poses ของ frame1 และ frame2 ฉันกำลังพยายามที่จะวิปริต frame1 ไปยังท่าทาง / มุมมองของ frame2 สำหรับสิ่งนี้ฉันกำลังจัดทำดัชนีตำแหน่งพิกเซลเป็น$[0,M-1]$ และ $[0,N-1]$สำหรับทิศทาง y และ x ตามลำดับ รหัสของฉันทำงานได้อย่างสมบูรณ์ (ยกเว้นบริเวณที่อุดตันซึ่งทำให้เกิดช่องโหว่)

ฉันกำลังดูกระดาษ View Synthesisนี้ รหัสที่ออกโดยผู้เขียนแทนพิกเซลดัชนีในช่วง$[-1,1]$. การใช้เมทริกซ์การแปลงและกล้องโดยตรงกำลังให้พิกัดการแปลงที่ไม่ถูกต้อง คุณช่วยอธิบายได้ไหมว่าฉันควรเปลี่ยนการเปลี่ยนแปลงและเมทริกซ์ของกล้องเพื่อให้ทำงานกับดัชนีพิกเซลในช่วงนั้นได้อย่างไร$[-1,1]$เหรอ?

รายละเอียดเพิ่มเติม :
ฉันได้ใช้การแปรปรวนในหลามโดยใช้สมการด้านล่าง ระบุตำแหน่งพิกเซล$p_1=[x,y]^T$

$$\hat{p}_1 = [x,y,1]^T$$ $$ P_1 = Z K^{-1} \hat{p}_1$$ $$ \hat{P}_1 = [P_1^T,1]^T $$ $$ \hat{P}_2 = T \hat{P}_1 $$ $$ P_2 = \hat{P}_2[0:3] $$ $$ \hat{p}_2 = K P_2 $$ $$ p_2 = \hat{p}_2[0:2] / \hat{p}_2[2] $$

$p_1$ คือจุดใน frame1 และ $p_2$ คือจุดที่สอดคล้องกันในเฟรม 2 $P_1$ คือจุดโลก 3 มิติในมุมมองของ frame1 และ $P_2$ คือจุด 3 มิติเดียวกันในมุมมองของเฟรม 2 $T$ คือการเปลี่ยนแปลงระหว่างมุมมองของ frame1 และ frame2 $Z$ คือความลึกที่แท้จริง $p_1$ในมุมมองของเฟรม 1 K คือเมทริกซ์ที่แท้จริงของกล้อง หมวก ($\hat{p})$ ใช้สำหรับพิกัดการฉายภาพ

ฉันคำนวณไฟล์ $4 \times 4$ เมทริกซ์การเปลี่ยนแปลง $T$ ดังต่อไปนี้: $$T = \begin{bmatrix} R & t \\ 0 & 1 \\ \end{bmatrix}$$ ที่ไหน $R$ คือเมทริกซ์การหมุนและ $t$ คือการแปล

$3 \times 3$ เมทริกซ์กล้อง $K$ ให้โดย $$K = \begin{bmatrix} \frac{W/2}{tan(hfov/2)} & 0 & W/2 \\ 0 & \frac{H/2}{tan(vfov/2)} & H/2 \\ 0 & 0 & 1 \\ \end{bmatrix}$$ ที่ไหน $H=W=240$ คือความสูงและความกว้างของเฟรม $hfov=60,\ vfov=45$

ในระยะสั้นฉันควรเปลี่ยนแปลงอะไรกับเมทริกซ์ $T$ & $K$เหรอ?

คำตอบ

NagabhushanSN Aug 23 2020 at 02:46

ก่อนที่จะพยายามตอบคำถามนี้เรามาดูกันก่อนว่าเมทริกซ์การแปลงกล้องทำหน้าที่อะไร พิจารณาจุด 3 มิติ

$$ P_1 = [X_1, Y_1, Z_1]^T $$

การคูณล่วงหน้าด้วยเมทริกซ์ของกล้องจะให้

$$ K \cdot P_1 = \begin{bmatrix} \frac{W/2}{tan(hfov/2)} & 0 & W/2 \\ 0 & \frac{H/2}{tan(vfov/2)} & H/2 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} X_1 \\ Y_1 \\ Z_1 \end{bmatrix} $$

$$ = \begin{bmatrix} \frac{W/2}{tan(hfov/2)} X_1 + W/2 \\ \frac{H/2}{tan(vfov/2)} Y_1 + H/2 \\ Z_1 \end{bmatrix} $$

อย่างที่เราเห็น $W/2$ ที่ $K[1,1]$ เครื่องชั่ง $x$ ค่าและ $W/2$ ที่ $K[1,3]$เพิ่มการชดเชย ดังนั้นถ้า$x \in [-1,1]$ จากนั้นโดยการสเกลและการหักล้างนี้เราจะได้ $x \in [0,W]$.

ตรงกันข้ามเมื่อ $x \in [0,W]$เราควรใช้เมทริกซ์ของกล้องตามที่กำหนดไว้ก่อนหน้านี้ ดังนั้นเมื่อ$x \in [-1,1]$เราไม่ควรเพิ่มมาตราส่วนหรือการหักล้าง ดังนั้นจึงต้องเปลี่ยนเฉพาะเมทริกซ์ของกล้องเป็น

$$K = \begin{bmatrix} \frac{1}{tan(hfov/2)} & 0 & 0 \\ 0 & \frac{1}{tan(vfov/2)} & 0 \\ 0 & 0 & 1 \\ \end{bmatrix}$$