6

Có rất nhiều bài viết về tái tạo 3D từ chế độ xem stereo của hiệu chuẩn nội bộ đã biết, một số trong số đó là excellent. Tôi đã đọc một số trong số đó và dựa trên những gì tôi đã đọc Tôi đang cố gắng tính toán việc dựng lại cảnh 3D của riêng mình bằng đường ống/thuật toán bên dưới. Tôi sẽ đặt ra các phương pháp sau đó đặt câu hỏi cụ thể ở phía dưới.Tái tạo 3D từ hai máy ảnh được hiệu chỉnh - lỗi trong đường ống này ở đâu?

0. Hiệu chỉnh máy ảnh của bạn:

  • Điều này có nghĩa lấy camera hiệu chuẩn ma trận K và K cho máy ảnh 1 và máy ảnh 2. Đây là ma trận 3x3 đóng gói mỗi camera thông số nội bộ: độ dài tiêu cự, điểm trung tâm bù đắp/trung tâm hình ảnh. Những điều này không thay đổi, bạn chỉ nên cần phải làm điều này một lần, tốt, cho mỗi camera miễn là bạn không phóng to hay thay đổi độ phân giải bạn ghi vào.
  • Làm ẩn này. Đừng cãi lại.
  • Tôi đang sử dụng OpenCV 's CalibrateCamera() và thói quen bàn cờ, nhưng chức năng này cũng được bao gồm trong Matlab Camera Calibration toolbox. Các thói quen OpenCV dường như hoạt động tốt.

1. cơ bản Matrix F:

  • Với máy ảnh của bạn bây giờ thiết lập là một giàn âm thanh stereo. Xác định ma trận cơ bản (3x3) của cấu hình đó bằng cách sử dụng các điểm tương ứng giữa hai hình ảnh/khung nhìn.
  • Cách bạn nhận được thư từ tùy thuộc vào bạn và sẽ tùy thuộc rất nhiều vào cảnh đó.
  • Tôi đang sử dụng OpenCV findFundamentalMat() để có được F, trong đó cung cấp một số lựa chọn phương pháp khôn ngoan (thuật toán 8 điểm, RANSAC, LMEDS).
  • Bạn có thể kiểm tra ma trận kết quả bằng cách cắm nó vào phương trình xác định của ma trận cơ sở: x'Fx = 0 trong đó x 'và x là các điểm ảnh điểm tương ứng (x, y) trong tọa độ đồng nhất (x, y, 1) và một trong ba vectơ được chuyển đổi sao cho phép nhân có ý nghĩa. Càng gần bằng không cho mỗi thư từ, thì F càng tốt hơn là tuân theo quan hệ của nó. Điều này tương đương với việc kiểm tra xem F thực sự tốt như thế nào khi ánh xạ từ một mặt phẳng ảnh này sang mặt phẳng khác. Tôi nhận được độ lệch trung bình là ~ 2px khi sử dụng thuật toán 8 điểm.

2. Essential Matrix E:

  • Tính ma trận Essential trực tiếp từ F và các ma trận hiệu chuẩn.
  • E = K T FK

3. Internal Hạn chế khi E:

  • E nên tuân theo những hạn chế nhất định.Cụ thể, nếu bị phân hủy bởi SVD thành USV.t thì giá trị số ít của nó phải là = a, a, 0. Hai phần tử chéo đầu tiên của S phải bằng nhau và số thứ ba bằng không.
  • Tôi đã rất ngạc nhiên khi đọc here rằng nếu điều này không đúng khi bạn thử nghiệm nó, bạn có thể chọn chế tạo ma trận thiết yếu mới từ phân hủy trước như sau: E_new = U * diag(1,1,0) * V.t, tất nhiên là được bảo đảm tuân thủ ràng buộc. Về cơ bản bạn đã đặt S = (100.010.000) giả tạo.

4. Full Ma trận máy ảnh chiếu:

  • Có hai chiếu camera ma trận P và P . Đây là 3x4 và tuân theo quan hệ x = PX. Ngoài ra, P = K[R|t] và do đó K_inv.P = [R|t] (nơi hiệu chuẩn máy ảnh đã bị xóa).
  • Ma trận đầu tiên P (trừ ma trận hiệu chỉnh K) có thể được thiết lập để [I|0] sau đó P (trừ K) là R|t
  • Tính Rotation và dịch giữa hai camera R, t từ sự phân hủy của E. Có hai cách có thể để tính R (U*W*V.tU*W.t*V.t) và hai cách tính t (± cột thứ ba của U), có nghĩa là có bốn kết hợp của Rt, chỉ một trong số đó là hợp lệ.
  • Tính toán tất cả bốn kết hợp và chọn kết hợp hình học tương ứng với trường hợp điểm được xây dựng lại là ở phía trước cả hai máy ảnh. Tôi thực sự thực hiện điều này bằng cách thực hiện và tính kết quả P = [R | t] và triangulating vị trí 3d của một vài tương ứng trong tọa độ chuẩn hóa để đảm bảo chúng có độ sâu dương (z-coord)

5. tra chéo trong không gian 3D

  • Cuối cùng, kết hợp các ma trận chiếu 3x4 phục hồi với ma trận chuẩn tương ứng của họ: P' = K P và P' = K P
  • Và triangulate tọa độ không gian 3 chiều của mỗi điểm tương ứng 2d cho phù hợp, mà tôi đang sử dụng phương pháp LinearLS từ here.

CÂU HỎI:

  • Có bất kỳ thiếu sót và/hoặc lỗi hú trong phương pháp này?
  • Ma trận F của tôi rõ ràng là chính xác (độ lệch 0,22% trong ánh xạ so với giá trị tọa độ điển hình), nhưng khi thử nghiệm E đối với x'Ex = 0 bằng cách sử dụng bình thường hóa hình ảnh tương ứng với lỗi điển hình trong ánh xạ đó> 100% các tọa độ chuẩn hóa .Đang thử nghiệm E chống lại xEx = 0 hợp lệ, và nếu như vậy mà nhảy trong lỗi đến từ đâu?
  • Lỗi trong ước tính ma trận cơ bản của tôi tồi tệ hơn đáng kể khi sử dụng RANSAC so với thuật toán 8pt, ± 50px trong ánh xạ giữa x và x '. Điều này liên quan sâu sắc đến tôi.
  • 'Ép buộc ràng buộc nội bộ' vẫn nằm rất kỳ quặc với tôi - làm sao nó có thể hợp lệ để sản xuất một ma trận khái quát mới từ một phần của sự phân hủy của bản gốc?
  • Có cách nào hiệu quả hơn để xác định tổ hợp R và t nào sử dụng hơn tính P và triangulating một số tọa độ chuẩn hóa?
  • Lỗi chiếu lại cuối cùng của tôi là hàng trăm pixel trong hình ảnh 720p. Tôi có thể xem xét các vấn đề trong việc hiệu chuẩn, xác định P-ma trận hoặc triangulation?
+0

Tôi thực sự đã thực hiện các bước chính xác này và tôi không thể cho cuộc sống của tôi tìm ra lý do. Tôi vẽ đường epipolar của tôi sau khi nhận được F, và họ nhìn tốt. Tôi kiểm tra x2'Ex1 = 0, và nhận e-10 là tổng số lỗi của tôi cho tất cả các điểm, tôi không biết phải làm gì! – Gentatsu

Trả lời

2

Các lỗi trong lập dự toán matr1ix cơ bản của tôi là tồi tệ hơn đáng kể khi sử dụng RANSAC so với thuật toán 8pt, ± 50px trong ánh xạ giữa x và x'. Điều này liên quan sâu sắc đến tôi.

Sử dụng thuật toán 8pt không loại trừ bằng nguyên tắc RANSAC. Khi sử dụng thuật toán 8pt trực tiếp, bạn sử dụng điểm nào? Bạn phải tự chọn 8 điểm (tốt).

Về lý thuyết, bạn có thể tính toán ma trận cơ bản từ bất kỳ điểm tương ứng nào và bạn thường nhận được ma trận cơ bản bị thoái hóa vì phương trình tuyến tính không độc lập. Một điểm nữa là thuật toán 8pt sử dụng hệ thống phương trình tuyến tính được xác định quá mức để một ngoại lệ duy nhất sẽ phá hủy ma trận cơ bản.

Bạn đã thử sử dụng kết quả RANSAC chưa? Tôi đặt cược nó đại diện cho một trong những giải pháp đúng cho F.

My F ma trận là rõ ràng chính xác (0,22% lệch trong việc lập bản đồ so với thông thường giá trị tọa độ), nhưng khi kiểm tra E chống lại x'Ex = 0 sử dụng hình ảnh chuẩn hóa tương ứng với lỗi điển hình trong số bản đồ đó là> 100% các tọa độ chuẩn hóa. Có phải là kiểm tra E với xEx = 0 hợp lệ không và nếu có thì nhảy vào lỗi sẽ đến từ đâu?

lần nữa, nếu F là thoái hóa, x' F x = 0 có thể dành cho tất cả các thư từ điểm.

Lý do khác khiến bạn không chính xác E có thể là công tắc của máy ảnh (K1T * E * K2 thay vì K2T * E * K1). Hãy nhớ kiểm tra: x'Ex = 0

'Thi hành những hạn chế nội' vẫn ngồi rất kì lạ với tôi - làm thế nào nó có thể có giá trị để chỉ sản xuất một ma trận Essential mới từ một phần của quá trình phân hủy của các gốc ?

Điều này được giải thích trong 'Nhiều chế độ xem hình ảnh trong tầm nhìn máy tính' từ Hartley và Zisserman. Theo như tôi biết, nó phải liên quan đến việc giảm thiểu chỉ tiêu Frobenius của F.

Bạn có thể sử dụng Google và có các tài nguyên pdf.

Có cách nào hiệu quả hơn việc xác định kết hợp của R và t để sử dụng hơn so với tính toán P và triangulating một số tọa độ bình thường?

Không xa như tôi biết.

Lỗi chiếu lại cuối cùng của tôi là hàng trăm pixel ở hình ảnh 720p. Am Tôi có thể xem xét các vấn đề trong hiệu chuẩn, xác định P-ma trận hoặc triangulation?

Chuyển đổi cơ thể cứng nhắc của bạn P2 không chính xác vì E không chính xác.

Các vấn đề liên quan