2012-06-30 39 views
6

Tôi có một bộ hình ảnh của một thân cứng nhắc với một số điểm đánh dấu đính kèm. Tôi đã xác định một hệ tọa độ có nguồn gốc ở một trong các điểm đánh dấu này và tôi muốn xoay và dịch giữa hệ tọa độ này và hệ tọa độ được xác định tại nguồn gốc của máy ảnh.Hiệu chuẩn máy ảnh (OpenCV 2.3) - cách sử dụng thông số méo?

Tôi đã thử một thời gian POSIT (sau this) mà không bao giờ nhận được kết quả chấp nhận được, cho đến khi tôi nhận ra rằng tôi đã phải hiệu chỉnh máy ảnh ở vị trí đầu tiên. Dựa trên this và sử dụng một số hình ảnh có được với một cơ quan hiệu chuẩn, tôi nhận được ma trận nội tại máy ảnh và các thông số méo. Tôi cũng có lỗi chiếu lại xấu (?) Là 1,276.

  1. Lỗi tái chiếu có quá cao không? Làm thế nào tôi có thể cải thiện nó? (Tôi đã sử dụng nhiều hình ảnh hơn và chỉ đạt được một chút giảm giá trị).
  2. Tôi có thể sử dụng các thông số biến dạng trong POSIT không? Làm sao?

Cảm ơn.


Có vẻ như rằng cách duy nhất để có được một giảm lỗi chiếu lại (nó thay đổi từ ~ 1,3 đến ~ 0,7) là bằng cách thiết lập để '0' các thông số sau trong file cấu hình XML:

<Calibrate_FixAspectRatio> 0 </Calibrate_FixAspectRatio> 
<Calibrate_AssumeZeroTangentialDistortion> 0 </Calibrate_AssumeZeroTangentialDistortion> 
<Calibrate_FixPrincipalPointAtTheCenter> 0 </Calibrate_FixPrincipalPointAtTheCenter> 

Sử dụng nhiều hình ảnh hơn không thay đổi lỗi và tôi vẫn không chắc liệu lỗi mới này có chấp nhận được hay không.

Tôi đã sử dụng các giá trị hiệu chuẩn cho đầu ra (cụ thể là độ dài tiêu cự và trung tâm quang) trong POSIT nhưng kết quả rất giống với kết quả tôi nhận được khi sử dụng giá trị hiệu chuẩn trước. Tôi đã không sử dụng các thông số biến dạng vì tôi không biết cách xử lý chúng trong POSIT (chúng có thể tạo sự khác biệt trong kết quả không?).

Ma trận máy ảnh tôi sau khi hiệu chuẩn:

<Camera_Matrix type_id="opencv-matrix"> 
<rows>3</rows> 
<cols>3</cols> 
<dt>d</dt> 
<data> 
2.0613885351075501e+003 0. 2.2865517805186334e+002 0. 
2.2546461307897816e+003 2.5261706201677623e+002 0. 0. 1. 
</data> 
</Camera_Matrix> 

và cách tôi đã sử dụng nó trong thừa nhận:

#define FOCAL_LENGTH 2158.0175 
#define FOCAL_LENGTH_X 2061.389 
#define FOCAL_LENGTH_Y 2254.646 
#define cX 203.655 
#define cY 205.117 

tôi tính toán chênh lệch giữa trung tâm mới phối và một cho hiệu chỉnh hình ảnh và sau đó áp dụng sự khác biệt trên các tọa độ trung tâm của hình ảnh mà tôi đang làm việc với POSIT.

Tôi đang sử dụng POSIT trên hai hình ảnh khác nhau về mặt lý thuyết tôi sẽ nhận được vòng quay 0 (cho lần đầu tiên) và 10 (đối với giây) giữa mô hình và hệ tọa độ camera. Sau khi tôi lấy ma trận xoay cho mỗi hình ảnh, tôi đã xác định một vector đơn vị trên hệ tọa độ camera và tính toán nó trên hệ tọa độ mô hình bằng cách lấy mẫu nó bằng nghịch đảo của hai ma trận quay do POSIT đưa ra, nhận hai vectơ mới trong mô hình hệ tọa độ. Khi tôi tính toán góc giữa hai vectơ này trong hệ tọa độ mô hình, đầu ra không giống như nó phải là - 10 độ.

Có ai có ý tưởng tôi đang đi sai không?

+0

Quên đề cập đến rằng cơ quan hiệu chuẩn của tôi là một mẫu lưới vòng tròn, không phải là bàn cờ tiêu biểu. –

Trả lời

2

Độ phân giải hình ảnh là bao nhiêu? Điểm chính nên gần trung tâm hình ảnh. đó là tiêu cự của ống kính? Đó là lỗi hiệu chuẩn có thể được tốt tùy thuộc vào độ chính xác mà bạn cần. Để tránh lỗi được giới thiệu bởi sự biến dạng của ống kính, bạn nên tháo các điểm ảnh được chuyển tới POSIT bằng cách sử dụng undistortPoints.Lỗi này lớn đến mức nào tùy thuộc vào độ méo của ống kính của bạn.

+0

Tôi không có bất kỳ thông tin nào về độ phân giải hình ảnh cũng như độ dài tiêu cự - đó là lý do tại sao tôi đã hiệu chỉnh. Từ ma trận máy ảnh, tôi lấy độ dài tiêu cự trong x và y và điểm chính của hình ảnh (nó gần với trung tâm hình ảnh). Logic của tôi có ở đâu đó không? –

+0

Độ phân giải hình ảnh là chiều rộng và chiều cao của hình ảnh của bạn. Bạn nên biết độ dài tiêu cự thực sự của ống kính (8mm, 16mm, ...). Độ phân giải hình ảnh và độ dài tiêu cự thực xác định giá trị độ dài tiêu cự cần được ước tính với quá trình hiệu chuẩn. BTW, không nên cX và cY là 228.655 và 252.617? –

+0

Chỉ cần có nó .. Tôi đã làm một ghi nhãn sai của các điểm ảnh, không thể phát hiện nó trước đó. Cảm ơn sự giúp đỡ của bạn Javier! –

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