2009-07-13 69 views
6

Làm theo dõi my previous question về việc xác định thông số máy ảnh Tôi đã hình thành một vấn đề mới.Xác định ma trận chuyển đổi

Tôi có hai ảnh của cùng một hình chữ nhật:

Đầu tiên là hình ảnh không có bất kỳ phép biến đổi nào và hiển thị hình chữ nhật như cũ.

Hình ảnh thứ hai hiển thị hình chữ nhật sau khi một số phép chuyển đổi 3d (xoay vòng XYZ, chia tỷ lệ, dịch XY) được áp dụng. Điều này đã khiến hình chữ nhật trông giống như hình thang.

Tôi hy vọng hình ảnh sau đây mô tả vấn đề của tôi:

alt text http://wilco.menge.nl/application.data/cms/upload/transformation%20matrix.png

Làm thế nào để xác định những biến đổi (cụ thể hơn: những gì ma trận chuyển đổi) đã gây ra tranformation này?

Tôi biết vị trí pixel của các góc trong cả hai hình ảnh, do đó tôi cũng biết khoảng cách giữa các góc.

Trả lời

2

Tôi đang bối rối. Đây có phải là sự cố 2ngày hoặc 3d không?

Cách tôi hiểu, bạn có hình chữ nhật phẳng được nhúng trong không gian 3d và bạn đang xem hai "hình ảnh" 2 chiều - một trong các phiên bản gốc và một hình ảnh dựa trên phiên bản được chuyển đổi. Điều này có đúng không?

Nếu điều này đúng, thì không có đủ thông tin để giải quyết vấn đề. Ví dụ: giả sử hai hình ảnh trông giống hệt nhau. Điều này có thể là do bản dịch là nhận dạng, hoặc có thể là do bản dịch di chuyển hình chữ nhật hai lần cách xa máy ảnh và tăng gấp đôi kích thước của nó (do đó làm cho nó trông giống hệt nhau).

+0

Đây là vấn đề 3d. Hình ảnh đầu tiên là một hình ảnh tham chiếu của hình chữ nhật trên thang tỷ lệ 1: 1. Thứ hai có thể được coi là một hình ảnh của hình chữ nhật được chụp bởi một máy ảnh. Tôi hiểu điểm của bạn rằng có nhiều giải pháp hơn (nhiều ma trận chuyển đổi hơn) cho một trường hợp cụ thể. Nếu đây là trường hợp, tôi rất vui khi chọn một trong số họ. (Trong trường hợp bạn mô tả, tôi sẽ hài lòng với ma trận nhận diện hoặc bất kỳ ma trận nào mang lại kết quả tương tự) – dwergkees

1

Đây là một vấn đề toán học, không phải lập trình ..

bạn cần phải định nghĩa một tập hợp các phương trình (ma trận chuyển đổi của bạn, tôi đoán là 3 phương trình) và sau đó giải quyết nó cho 4 biến đổi của góc-điểm .

Tôi đã từng mô tả điều này bằng cách sử dụng các từ tiếng Đức ... do đó, các âm thanh trên sẽ lạ ..

0

Dựa trên thông tin bạn có, điều này không dễ dàng. Tôi sẽ cung cấp cho bạn một số ý tưởng để chơi với, tuy nhiên. Nếu bạn có tọa độ 3D của các góc, bạn sẽ có thời gian dễ dàng hơn. Đây là ý tưởng cơ bản.

  1. Di chuyển góc tới gốc. Sau đó, luân phiên sẽ diễn ra về nguồn gốc.
  2. Xác định vectơ của các trục. Làm điều này bằng cách trừ các góc liền kề khỏi điểm gốc. Đây sẽ là một trục x và y địa phương cho thế giới của bạn.
  3. Xác định góc sử dụng vectơ. Bạn có thể sử dụng dấu chấm và các sản phẩm chéo để xác định góc giữa trục x địa phương và trục x chung (1, 0, 0).
  4. Xoay theo góc ở bước 3. Thao tác này sẽ cung cấp cho bạn trục x mới phù hợp với trục x chung và trục y địa phương mới. Sau đó bạn có thể xác định một vòng quay khác về trục x sẽ đưa trục y vào thẳng hàng với trục y toàn cầu.

Nếu không có tọa độ z, bạn có thể thấy điều này sẽ khó, nhưng đây là quá trình chung.Tôi hi vọng cái này giúp được.

0

Giải pháp sẽ không phải là duy nhất, như Alex319 chỉ ra.

Nếu hình ảnh thứ hai thực sự là hình thang như bạn nói, thì điều này sẽ không quá khó. Nó là một hình thang (không phải là một hình bình hành) vì quan điểm, do đó, nó phải là một hình thang cân.

Vẽ hai đường chéo. Chúng giao nhau ở trung tâm của hình chữ nhật, vì vậy mà sẽ chăm sóc bản dịch.

Xoay hình thang cho đến khi cạnh song song của nó song song với hai cạnh của hình chữ nhật ban đầu. (Hai cái gì? Nó không quan trọng.)

Vẽ song song thứ ba qua tâm. Chia tỷ lệ này sang các cạnh của hình chữ nhật bạn đã chọn.

Bây giờ để quay vòng ra khỏi mặt phẳng. Đo khoảng cách từ trung tâm đến một trong các cạnh song song và sử dụng định luật sin.

Nếu nó không phải là một hình thang, chỉ là một tứ giác, sau đó nó sẽ khó khăn hơn, bạn sẽ phải sử dụng các góc giữa các đường chéo để tìm trục quay.

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