Tôi có thể sử dụng chức năng FindChessboardCorners cho hình ảnh có kích thước nhỏ hơn 15 Mega như 2k x 1.5k. tuy nhiên khi tôi sử dụng nó trên hình ảnh từ DSLR, độ phân giải 3700x5300, nó không hoạt động.FindChessboardCorners không thể phát hiện bàn cờ trên hình ảnh rất lớn bằng ống kính tiêu cự dài
Tôi đã cố gắng sử dụng thay đổi kích thước() để giảm kích thước hình ảnh trực tiếp, sau đó nó hoạt động.
Rõ ràng có một số mã hóa hoặc lỗi cứng trong mã nguồn OpenCV.
Bạn có thể giúp tôi tìm ra hoặc chỉ cho tôi một bản vá cho điều này không?
Tôi thấy một người nào đó đã đăng sự cố tương tự vào năm 2006, here, vì vậy có vẻ như vấn đề vẫn còn.
Code tôi sử dụng cũng giống như
found = findChessboardCorners(viewGray, boardSize, ptvec,
CV_CALIB_CB_ADAPTIVE_THRESH + CV_CALIB_CB_FILTER_QUADS + CV_CALIB_CB_NORMALIZE_IMAGE + CV_CALIB_CB_FAST_CHECK);
Cập nhật
Chỉ cần vào đây để làm rõ. Tôi nghĩ rằng thuật toán hoạt động trên độ phân giải hình ảnh lớn, nhưng nó không thành công khi bàn cờ chiếm tỷ lệ lớn hơn của hình ảnh. Ví dụ, khi tôi sử dụng một ống kính cố định 50mm trên cùng một vị trí máy ảnh, FindChessboardCorners không bao giờ thất bại. Sau khi tôi đổi nó thành ống kính cố định 100mm, chức năng bắt đầu dừng phát hiện mẫu. Tôi nghĩ rằng nó liên quan đến tỷ lệ hoặc tiêu cự.
Hình ảnh dưới đây là kết quả ống kính 100mm.
Cập nhật 2
tôi đã thêm một bộ lọc làm sắc nét cho hình ảnh lớn, và nó bắt đầu để khắc phục vấn đề.
Trước hết tôi sử dụng
//do a sharpen filter for the large resolution image
if (viewGray.cols > 1500)
{
Mat temp ;
GaussianBlur(viewGray,temp, Size(0,0), 105) ; //hardcoded filter size, to be tested on 50 mm lens
addWeighted(viewGray, 1.8, temp, -0.8,0,viewGray) ; //hardcoded weight, to be tested.
//imwrite("test"+ imageList[k][i], viewGray) ;
}
found = findChessboardCorners(viewGray, boardSize, ptvec,
CV_CALIB_CB_ADAPTIVE_THRESH + CV_CALIB_CB_FILTER_QUADS + CV_CALIB_CB_NORMALIZE_IMAGE + CV_CALIB_CB_FAST_CHECK);
tải lên các hình ảnh:
Một hình ảnh jpg ở độ phân giải gốc 3744 x 5616, nếu lực lượng trang web này chuyển đổi, sau đó hãy chắc chắn rằng bạn đang sử dụng ở độ phân giải đúng .
bạn có thể tải lên hình ảnh? Ngoài ra, nó sụp đổ hoặc nó chỉ trả về sai? – Sassa
@Chrys, đã tải lên hình ảnh –
có thể là vấn đề với hình ảnh không? bạn sử dụng loại f-stop nào? có lẽ độ sâu trường thấp có thể gây nhầm lẫn cho thuật toán? nhìn vào góc dưới cùng bên phải nó hơi bị mờ? – Alex