Tôi có một hình được biểu diễn thông qua một ma trận byte (ma trận giống như bitmap). Hình ví dụ được hiển thị trên Picture 1
.
Mục tiêu là tìm góc quay tốt nhất của một số hình đã cho . Khi Hình được xoay theo góc tốt nhất, hình chữ nhật song song với trục X và Y và ghi Hình có diện tích nhỏ nhất.
Hình chữ nhật ghi hình được hiển thị màu xám nhạt trên hình ảnh. Trong phần Picture 2
, bạn có thể thấy rằng góc quay lý tưởng của Hình là khoảng 30 độ theo chiều kim đồng hồ.
Bây giờ, tôi biết thuật toán làm thế nào để tìm góc này, nhưng dường như nó rất kém hiệu quả. Nó như thế này:
- Vòng qua các góc từ 0 đến 45.
- Đối với góc hiện tại, với mỗi điểm hình, tính toán vị trí mới, xoay,
- Tìm giới hạn của hình chữ nhật có chứa hình (tối thiểu và tối đa x, y) và đăng ký nó nếu phù hợp nhất cho đến nay
- Góc tiếp theo
Đây là một loại phương pháp vũ phu và hoạt động tốt và nhanh chóng hợp lý cho các số liệu nhỏ. Tuy nhiên, tôi cần làm việc với các số liệu có chứa tới 10 triệu điểm và thuật toán của tôi trở nên chậm.
Điều gì sẽ là thuật toán tốt cho vấn đề này?