Tôi đã viết một chương trình bằng Python có thể tự động đọc bảng điểm như thế này một phát hiện mạnh mẽ của mô hình lưới trong một hình ảnh
Tại thời điểm tôi đang sử dụng chiến lược cơ bản sau đây:
- Deskew hình ảnh bằng cách sử dụng ImageMagick
- Đọc bằng Python sử dụng PIL, chuyển đổi hình ảnh thành B & W
- Tính toán tổng các điểm ảnh trong các hàng và cột
- Tìm các mức cao nhất trong các khoản tiền này
- Kiểm tra các giao lộ được ngụ ý bởi các đỉnh này để điền.
Kết quả của việc chạy chương trình được thể hiện trong hình ảnh này:
Bạn có thể xem lô đỉnh bên dưới và bên phải của hình ảnh hiển thị trong trên bên trái. Các dòng trong hình trên cùng bên trái là vị trí của các cột và các chấm đỏ hiển thị các điểm đã xác định. Biểu đồ góc dưới bên phải cho thấy mức độ lấp đầy của mỗi vòng tròn và đường phân loại.
Sự cố với phương pháp này là yêu cầu điều chỉnh cẩn thận và nhạy cảm với sự khác biệt trong cài đặt quét. Có cách nào mạnh mẽ hơn để nhận diện lưới, điều này sẽ yêu cầu ít thông tin ưu tiên hơn (hiện tại tôi đang sử dụng kiến thức về số lượng dấu chấm có) và mạnh mẽ hơn đối với những người vẽ các hình dạng khác trên trang tính không? Tôi tin rằng nó có thể là có thể bằng cách sử dụng một 2D Fourier Transform, nhưng tôi không chắc chắn như thế nào.
Tôi đang sử dụng EPD, vì vậy tôi có khá nhiều thư viện theo ý của mình.
Bạn có thể thử sử dụng biến đổi Hough cho các vòng kết nối tìm kiếm. Hoặc thậm chí chỉ cần thực hiện một tương quan chéo của hình ảnh được quét với hình ảnh của vòng tròn đơn. Peaks sẽ hiển thị tọa độ của tất cả các vòng tròn, điều chỉnh nhẹ (phương pháp hình vuông trung bình hoặc thậm chí ít nhất) sẽ cung cấp cho bạn lưới tốt. –
liên quan: [Tìm số hình dạng màu từ hình ảnh sử dụng Python] (http://stackoverflow.com/q/5298884/4279) – jfs