Tôi đang cho hình ảnh Bitmap vào chương trình C# để có thể thực hiện OCR để xác định các ký tự trong hình ảnh. Tôi có thể làm điều này khá tốt nếu hình ảnh không được xoay. Tuy nhiên, một trong những yêu cầu của chương trình là chương trình sẽ tự động xác định xem hình ảnh đã được xoay hay chưa và nó sẽ tự động sửa các phép quay này.Làm thế nào để tìm góc quay của hình ảnh?
Tôi đã thử triển khai một phương pháp đơn giản, trong đó các dòng được ghi lại trên hình ảnh và các điểm liên hệ với một ký tự được ghi lại và sau đó thực hiện hồi quy tuyến tính đơn giản trên các điểm dòng. Điều này hoạt động đến một mức độ, mặc dù nó đã không được chứng minh rất chính xác do độ cong của các ký tự, v.v.
Tôi đã tự hỏi nếu có một phương pháp tốt hơn để giải quyết vấn đề này? Rất cám ơn trước! :)
Thuật toán này đã thực hiện thủ thuật cho tôi. Tôi tìm thấy một C# thực hiện tuyệt vời [ở đây.] (Http://mdb-blog.blogspot.com/2010/10/c-how-to-deskew-image.html) Thật không may, nó có vẻ như các thuật toán như bằng văn bản là khá hardcoded cho ± 20 độ. Tôi đã thử thay đổi các dòng mã như 'double cAlphaStart = -20;' thành -45 thay vào đó, để tìm kiếm ± 45 độ, và một số dòng khác, nhưng chắc chắn một cái gì đó sẽ phá vỡ. Tôi rất muốn nghe nếu có một thuật toán linh hoạt hơn, hoặc ai đó có thể giải thích cách tinh chỉnh thuật toán linh hoạt hơn mà không vi phạm kết quả. –
Tôi cũng đã thử nó và nó hoạt động tốt. @MacSigler Để tăng góc "phạm vi" thành (-45, + 45) có vẻ như bạn chỉ cần thay đổi các dòng: double cAlphaStart = -45; int cSteps = 90 * 5; Tôi đã thử nghiệm một cách nhanh chóng nhưng nó có vẻ là ok. – AFract