7

Tôi đang xây dựng một ứng dụng iOS, như một tính năng chính, kết hợp tính năng kết hợp hình ảnh. Vấn đề là hình ảnh tôi cần phải nhận ra là các mảng 10x10 định hướng nhỏ với văn bản lớn đơn giản trên chúng. Chúng có thể khá phản chiếu và sẽ ở bên ngoài (vì vậy các điều kiện ánh sáng sẽ biến đổi). hình ảnh mẫuKết hợp hình ảnh thưa thớt trong iOS

enter image description here

Sẽ có tối đa là 15 của các loại hình ảnh trong hồ bơi và thực sự tất cả những gì cần để phát hiện là nội dung, để đăng nhập mà người dùng đã. Vấn đề tôi phải đối mặt là với phần mềm phù hợp với hình ảnh tôi đã thử, aurasma và hơi arlabs thành công hơn một chút, họ không thể phân biệt giữa chúng khi chúng được xây dựng chủ yếu để làm việc với hình ảnh chi tiết.

Tôi cần phát hiện chính xác mảng bám nào đang được quét và đã cân nhắc sử dụng gps để tinh chỉnh lựa chọn nhưng cách đáng tin cậy duy nhất tôi tìm thấy là giúp người dùng nhập văn bản theo cách thủ công. Một trong những điểm thu hút chính mà chúng tôi có dựa trên sản phẩm xung quanh là có thể phát hiện những hình ảnh đã có sẵn và không phải thiết lập bất kỳ tài liệu bổ sung nào.

Ai đó có thể đề xuất một phần mềm có thể hoạt động (thân thiện với iOS) hoặc phương pháp phát hiện có hiệu quả và tương tác/dễ chịu cho người dùng.

môi trường mẫu: http://www.orienteeringcoach.com/wp-content/uploads/2012/08/startfinishscp.jpeg

Môi trường có thể thay đổi đáng kể, về cơ bản bất cứ nơi nào một mảng bám có thể được bố trí họ; hàng rào, tường, và các bài viết trong khu vực rừng hoặc mở, nhưng ở ngoài trời.

+2

Bạn có một vài hình ảnh của các mảng này trong môi trường tự nhiên của chúng, để đưa ra ý tưởng về những gì chúng tôi muốn tìm kiếm chúng? Nếu bạn không thể có được một giải pháp tốt cho vấn đề xử lý hình ảnh tổng quát hơn ở đây, những người tại http://dsp.stackexchange.com có ​​thể cung cấp cho bạn một bàn tay với phần đó của nó. Tuy nhiên, họ sẽ không thể mô tả một giải pháp cụ thể cho iOS. –

+1

Bạn có thể cần phải xử lý trước các hình ảnh để tạo ra một hình ảnh có độ tương phản cao - ném ra tất cả các thông tin quy mô màu xám, và bù đắp cho bóng, vv dsp.stackexchange.com có ​​thể có một số gợi ý. (Họ là một mái tóc khoan dung hơn "ngu ngốc" câu hỏi hơn là hội đồng này.) –

+0

Chiến thuật của tôi cho đến nay là cô lập hình ảnh và có một kiểm tra cắt rect trên layed trên máy ảnh. Tôi hy vọng người dùng sẽ căn chỉnh hình ảnh trong khu vực. –

Trả lời

1

Tôi đã tìm được giải pháp hoạt động khá tốt. Im chưa được tối ưu hóa đầy đủ nhưng tôi nghĩ rằng nó chỉ tinh chỉnh các bộ lọc, như bị bệnh giải thích sau này.

Ban đầu tôi đã cố gắng thiết lập opencv nhưng nó đã rất tốn thời gian và một đường cong học tập dốc nhưng nó đã cho tôi một ý tưởng. Chìa khóa cho vấn đề của tôi là thực sự phát hiện các ký tự bên trong hình ảnh và bỏ qua nền, về cơ bản chỉ là tiếng ồn. OCR được thiết kế chính xác cho mục đích này.

Tôi tìm thấy thư viện miễn phí tesseract (https://github.com/ldiqual/tesseract-ios-lib) dễ sử dụng và có nhiều tùy chỉnh. Lúc đầu các kết quả rất ngẫu nhiên nhưng áp dụng bộ lọc sắc nét và đơn sắc và một màu đảo ngược làm việc tốt để làm sạch văn bản. Tiếp theo đánh dấu một khu vực mục tiêu trên ui và sử dụng để cắt hình chữ nhật của hình ảnh để xử lý. Tốc độ xử lý chậm trên hình ảnh lớn và điều này làm giảm đáng kể. Bộ lọc OCR cho phép tôi hạn chế các ký tự cho phép và vì các mảng bám theo một cấu hình tiêu chuẩn đã thu hẹp độ chính xác.

Cho đến nay thành công của nó với các mảng nền màu xám nhưng tôi không tìm thấy bộ lọc chính xác cho các phiên bản màu đỏ và trắng. Mục tiêu của tôi là thêm tính năng phát hiện màu và loại bỏ nhu cầu cấp dữ liệu trong loại dữ liệu.

2

Tôi không phải là lập trình viên của iO, nhưng tôi sẽ cố gắng trả lời từ quan điểm thuật toán. Về cơ bản, bạn có một vấn đề phát hiện ("mảng bám ở đâu?") Và một vấn đề phân loại ("Cái nào là nó?"). Yêu cầu người dùng giữ các mảng bám trong một khu vực được xác định trước chắc chắn là một ý tưởng tốt. Điều này giải quyết vấn đề phát hiện, thường khó giải quyết hơn với các tài nguyên hạn chế hơn là vấn đề phân loại.

Đối với phân loại, tôi thấy hai lựa chọn:

  1. Các "Computer Vision" cổ điển tuyến đường sẽ là tính năng khai thác và phân loại. Local Binary PatternsHOG là các trình trích xuất tính năng được biết là đủ nhanh cho thiết bị di động (trước đây hơn là thiết bị di động) và chúng không quá phức tạp để triển khai. Tuy nhiên, các trình phân loại là không tầm thường và bạn có thể phải tìm kiếm thư viện iO thích hợp.

  2. Ngoài ra, bạn có thể thử binarize hình ảnh, tức là phân loại pixel thành "tấm"/trắng hoặc "văn bản"/đen. Sau đó, bạn có thể sử dụng một biện pháp tương tự có khả năng chịu lỗi để so sánh hình ảnh được binarized của bạn với hình ảnh tham chiếu được binarized của mảng bám. chamfer distance measure là một ứng cử viên tốt. Về cơ bản, nó tóm tắt để so sánh distance transforms trong hai hình ảnh được binarized của bạn. Điều này có thể khoan dung hơn so với việc so sánh trực tiếp hình ảnh nhị phân. Khoảng cách biến đổi của các hình ảnh tham chiếu có thể được tính toán trước và lưu trữ trên thiết bị.

Cá nhân, tôi sẽ thử phương pháp thứ hai. Một nguyên mẫu (không phải di động) của phương pháp thứ hai là tương đối dễ dàng để mã hóa và đánh giá với một thư viện xử lý hình ảnh tốt (OpenCV, Matlab + Hộp công cụ xử lý hình ảnh, Python, v.v.).

+0

Phản hồi tuyệt vời. Vấn đề chính của tôi là tôi không có thời gian để thực hiện các thuật toán phù hợp, đặc biệt là từ kinh nghiệm không. Im tìm kiếm để tìm/mua một giải pháp hoàn chỉnh, không giống như những gì tôi đã sử dụng cho đến nay, hoạt động trong môi trường của tôi. Bạn đang điểm về phân loại nhị phân cho tôi hy vọng là sự tương phản cho tất cả các mảng là cao. Cảm ơn. –