2013-04-08 33 views
7

Cách nhanh nhất để phát hiện vòng tròn trong hình ảnh là gì?Cách nhanh nhất để phát hiện vòng tròn trong hình ảnh là gì?

Ví dụ: tôi có hình ảnh với một Vòng tròn lớn và có 6 vòng tròn nhỏ bên trong Vòng tròn lớn.

Tôi cần phải tìm một vòng tròn lớn mà không cần sử dụng Vòng kết nối thô (OpencV).

+0

Bạn có biết kích thước của vòng kết nối không? Sau đó, một cách tiếp cận tương quan đơn giản có thể làm các trick. –

+0

Không, chúng tôi không biết kích thước của vòng tròn và cũng xin vui lòng đề nghị ý tưởng làm thế nào để tìm thấy nếu chúng ta biết kích thước vòng tròn: P – Pixel

+0

Thực sự chuyển đổi hough là rất nhanh và có thể là giải pháp duy nhất tốt. Biến đổi hough của opencv sử dụng toán tử canny để lấy các cạnh. Các nhà điều hành canny là nút cổ chai. Có lẽ bạn có thể viết tay một mã để tìm các cạnh của hình ảnh của bạn. Tương quan sử dụng các giá trị float và phép nhân. Tôi muốn nói rằng sự tương quan cần nhiều thời gian hơn (đối với các đối tượng lớn thực sự rất nhiều thời gian) và không chính xác hơn. Nó có thể là biến đổi hough của opencv không được mã hóa rất tốt có thể bạn có thể viết lại nó để làm cho nó nhanh hơn. – jamk

Trả lời

8

Thuật toán tiêu chuẩn để tìm các vòng kết nối là Hough (bị kẹt trong các chú thích) và RANSAC. Tham số hóa các thuật toán này sẽ đặt tốc độ đường cơ sở cho ứng dụng của bạn.

http://en.wikipedia.org/wiki/Hough_transform

http://en.wikipedia.org/wiki/RANSAC

Đẩy nhanh tiến độ các thuật toán, bạn có thể nhìn vào bộ sưu tập các hình ảnh và quyết định có giới hạn phạm vi tìm kiếm sẽ giúp tăng tốc độ tìm kiếm. Đủ đơn giản: chỉ tìm kiếm trong phạm vi hợp lý cho bán kính. Vì chúng lấy điểm cạnh làm đầu vào, bạn cũng có thể xem xét các phương pháp để giảm số điểm cạnh được chọn.

Tuy nhiên, có một vài thủ thuật khác để tăng tốc quá trình xử lý.

  • Cẩn thận đặt phạm vi hoặc phạm vi trên bán kính nào được chọn. Ví dụ: bạn có thể không chỉ cần kiểm tra từ bán kính nhỏ nhất có thể đến bán kính lớn nhất có thể, mà thay vào đó bạn có thể chia tìm kiếm thành hai phạm vi khác nhau: từ bán kính R1 đến R2 và sau đó từ bán kính R3 sang R4.
  • Làm chậm phát hiện cạnh của Canny để ủng hộ phát hiện cạnh nhanh nhất có thể mà ứng dụng của bạn có thể chịu đựng. (Bạn có thể mương Canny cho nhiều ứng dụng.)
  • Xử lý trước hình ảnh của các điểm cạnh để loại trừ các ngoại lệ. Thuật toán thích hợp để loại trừ các ngoại lệ sẽ cụ thể cho bộ ảnh của bạn, nhưng có thể bạn sẽ tìm được thuật toán loại bỏ các ngoại lệ rõ ràng và do đó tiết kiệm thời gian tìm kiếm trong các thuật toán phù hợp với vòng tròn đắt tiền hơn.
  • Nếu vòng kết nối của bạn được xác định rất rõ ràng, và tất cả hoặc gần như tất cả các điểm đều có mặt, hãy tìm hiểu cách bạn chỉ có thể kết hợp vòng tròn quý hoặc hình bán nguyệt thay vì vòng tròn đầy đủ.

Ngắn câu chuyện: bắt đầu với việc triển khai hoàn chỉnh và đo điểm chuẩn, sau đó tăng dần cài đặt thông số và giới hạn phạm vi tìm kiếm trong khi vẫn đảm bảo bạn vẫn có thể tìm thấy vòng kết nối cho ứng dụng và bộ hình ảnh của mình.

Nếu hình ảnh của bạn có khả năng mở rộng, thì một khả năng là tạo hình kim tự tháp hình ảnh ở các tỷ lệ khác nhau: 1/2 scale, 1/4 scale, 1/8 scale, v.v. -phương pháp mở rộng quy mô ở quy mô nhỏ hơn.

Một khi bạn có kim tự tháp hình ảnh của bạn, hãy thử như sau:

  1. Find vòng tròn ở quy mô rất nhỏ. Hình ảnh sẽ nhỏ và phạm vi của bán kính có thể sẽ bị giới hạn, vì vậy đây phải là hoạt động nhanh chóng .
  2. Nếu bạn tìm thấy một vòng tròn sử dụng phù hợp ban đầu ở quy mô nhỏ, hãy cải thiện sự phù hợp bằng cách thử nghiệm trong hình ảnh tỷ lệ lớn hơn tiếp theo -HOẶC - tiếp tục và tìm kiếm ở hình ảnh tỷ lệ đầy đủ.
  3. Kiểm tra quy mô lớn nhất tiếp theo. Vòng kết nối không hiển thị trong hình ảnh tỷ lệ nhỏ hơn có thể đột nhiên "xuất hiện" ở tỷ lệ hiện tại.
  4. Lặp lại các bước trên qua tất cả các tỷ lệ trong hình ảnh.

Chia tỷ lệ hình ảnh sẽ hoạt động nhanh và bạn có thể thấy ít nhất một trong các vòng kết nối của mình có kích thước nhỏ hơn. trong hình ảnh có quy mô nhỏ và sau đó tối ưu hóa sự phù hợp cho những điểm cạnh đó một mình trong hình ảnh tỷ lệ đầy đủ.

Điều chỉnh tỷ lệ giữ cạnh cũng có thể sử dụng các công cụ tương quan để tìm vòng kết nối, nhưng có thể làm như vậy phụ thuộc vào nội dung của hình ảnh của bạn, bao gồm tiếng ồn. trên.

+1

Câu trả lời hay, mặc dù Hough mạnh mẽ khi đối mặt với tiếng ồn, nó yêu cầu các vòng tròn "hoàn hảo" cho hiệu năng tốt. +1 anyway. –

+1

Cảm ơn, Roger. Đôi khi tôi sẽ chỉnh sửa một Hough phù hợp để cho phép một chút sloppiness vị trí cho các điểm cạnh có thể nằm +/- N pixel cách xa một vòng tròn thực sự. Các điều chỉnh đặc biệt khác cho kỹ thuật Hough cơ bản đã làm việc tốt cho tôi trong quá khứ. – Rethunk

+0

"tinh chỉnh một phù hợp với Hough" bạn có nghĩa là bằng cách sửa đổi mã nguồn openCV để phù hợp với nhu cầu của bạn? – LandonZeKepitelOfGreytBritn

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