2011-06-24 35 views
5

Tôi quan tâm đến việc nhận dạng các chữ cái trên bảng Boggle, có thể sử dụng openCV. Các chữ cái có cùng phông chữ nhưng có thể được xoay, do đó việc sử dụng thư viện nhận dạng văn bản chuẩn là một vấn đề. Ngoài ra, M và W có dấu gạch dưới để phân biệt chúng, và Q thực sự là một Qu. Tôi khá tự tin tôi có thể cô lập các chữ cái riêng biệt trong hình ảnh, tôi chỉ tự hỏi làm thế nào để làm phần công nhận.nhận dạng các chữ cái boggle/scrabble từ một hình ảnh

Trả lời

6

Tùy thuộc vào tốc độ bạn cần. Nếu bạn có thể cô lập các vuông của bức thư và xoay nó để các cạnh của hình vuông chứa bức thư là ngang và dọc sau đó tôi sẽ đề nghị bạn:

  • chuyển đổi hình ảnh sang màu đen/trắng (bằng chữ một màu và phần còn lại của cái chết khác
  • tạo tập dữ liệu tham chiếu của tất cả các chữ cái trong tất cả bốn hướng có thể (tức là thẳng đứng và xoay 90, 180 và 270 độ)
  • sử dụng chức năng khớp mẫu chẳng hạn như cvMatchTemplate để tìm hình ảnh phù hợp nhất từ ​​tập dữ liệu của bạn cho mỗi hình ảnh mới.

Điều này sẽ mất một chút thời gian, vì vậy tối ưu hóa là có thể, nhưng tôi nghĩ rằng nó sẽ giúp bạn có được một kết quả hợp lý. Nếu nhận được chúng theo một định hướng đúng là khó khăn, bạn cũng có thể tạo ra các phiên bản xoay của đầu vào mới của bạn một cách nhanh chóng và khớp với các phiên bản đó vào tập dữ liệu tham chiếu của bạn.

Nếu các chữ cái có quy mô khác nhau sau đó tôi có thể nghĩ đến hai lựa chọn:

  • Nếu định hướng không phải là một vấn đề (tức là phát hiện khối Boggle bạn cũng có thể đặt các khối trong định hướng đúng đắn) sau đó bạn có thể sử dụng hộp giới hạn của khu vực có màu chữ như chỉ báo thô của thang đo hình ảnh đến và tỷ lệ có cùng kích thước với hộp giới hạn trên hình ảnh tham chiếu của bạn (điều này có thể khác nhau đối với mỗi hình ảnh tham chiếu)
  • Nếu định hướng là một vấn đề sau đó chỉ cần thêm mở rộng như một tham số của không gian tìm kiếm của bạn. Vì vậy, bạn tìm kiếm tất cả các vòng quay (0-360 độ) và tất cả các kích thước hợp lý (bạn có lẽ nên có khả năng đoán phạm vi hợp lý từ những hình ảnh bạn có).
+0

Điều này có hoạt động với hình ảnh có kích thước/zoom khác nhau không? tức là nếu máy ảnh ở gần hoặc xa hơn gạch? – eggbert

+0

Tôi đã cập nhật câu trả lời cho câu hỏi của bạn. –

4

Bạn có thể sử dụng OCR đơn giản như Tesseract. Nó rất dễ sử dụng và khá nhanh. Bạn sẽ phải thực hiện 4 phép quay (như đã đề cập trong câu trả lời của @jilles de wit).

2

Tôi đã tạo một ứng dụng iOS chỉ thực hiện việc này, dựa trên OpenCV. Nó được gọi là SnapSolve. Tôi đã viết một blog về cách phát hiện hoạt động. Về cơ bản, tôi che phủ tất cả 26x4 chữ cái có thể + xoay trên mỗi hình dạng và xem chữ nào trùng lặp nhiều nhất. Một chút tinh chỉnh cho điều này là làm mịn hình ảnh lớp phủ, để loại bỏ các đồ tạo tác mà các chữ cái gần như trùng lặp nhưng không hoàn toàn.

+0

Tôi đã không xem xét dự án của tôi trong một vài năm nhưng bài viết rất thú vị, cảm ơn. Liên kết đến blog về việc thực hiện nó trong javacsript cũng khá thú vị. – eggbert

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