5

sceneCách tìm loại hình này trong hình ảnh

Giả sử tôi có hình ảnh của một cảnh như được mô tả ở trên. Một loại cực với một đốm màu trên nó bên cạnh các đối tượng tương tự có thể không có đốm màu. Làm cách nào để tìm đốm màu được đánh dấu bằng vòng tròn màu đỏ (hình ảnh nhị phân cho biết các điểm ảnh nào thuộc về đốm màu).

Lưu ý rằng cực cùng với đốm màu có thể được xoay tùy ý và kích thước cũng có thể thay đổi.

+0

nếu hai số đó là số liệu duy nhất có thể xuất hiện trong hình ảnh thì đó là tìm kiếm thông qua mảng pixel cho đường viền cong. Bạn có đủ để tính toán trung tâm của vòng tròn thời điểm bạn tìm thấy một biên giới như vậy. – ashley

+0

và làm cách nào để đạt được điều này? – Leo

Trả lời

1

Bạn có thể thử làm điều đó trong 4 bước dưới đây không?

  1. phát hiện các mối như: writing robust (color and size invariant) circle detection with opencv (based on Hough transform or other features)
  2. Dòng phát hiện, như: Finding location of rectangles in an image with OpenCV
  3. Xác định vị trí hình chữ nhật bằng cách kết hợp các đường lân cận (Đối với mỗi đoạn thẳng bạn có vị trí điểm bắt đầu và kết thúc, bạn cũng biết hướng của mỗi phân đoạn đường. Vì vậy, bạn có thể tìm ra liệu hai đoạn đường kết nối (có điểm cuối là gần) là trực giao hay không. Mục tiêu của bạn là tìm 3 phân đoạn như vậy cho mỗi hình chữ nhật.)

  4. Kiểm tra vị trí tương đối của từng phân đoạn hình tròn và hình chữ nhật để xem liệu bất kỳ cặp nào có thể tạo thành hình dạng knob.

1

Một phương pháp có thể đang sử dụng Viola-Jones object detection framework.

Mặc dù khung được sử dụng chủ yếu để phát hiện khuôn mặt - nó thực sự được thiết kế cho các đối tượng chung mà bạn nạp vào thuật toán.


Thuật toán tưởng cơ bản là để nuôi mẫu của "đối tượng tốt" (những gì bạn đang tìm kiếm) và "đối tượng xấu" tới thuật toán học máy - mà tạo ra mô hình từ những hình ảnh như các tính năng của nó.

Trong quá trình phân loại - sử dụng cửa sổ trượt, thuật toán sẽ tìm kiếm "đối sánh" cho đối tượng (trình phân loại trả về câu trả lời tích cực).


Thuật toán sử dụng supervised learning và do đó đòi hỏi một tập nhãn của ví dụ (những người cả tích cực và tiêu cực)

+0

Cảm ơn, nhưng tôi thích một giải pháp đơn giản hơn. Điều này phần nào là tính toán chuyên sâu (mặc dù là thời gian thực). Plus, tôi thực sự có một tốt trước khi những gì "đốm" trông giống như vậy chuẩn bị một bộ nhãn có vẻ như một chút không cần thiết. Tôi đã hy vọng tìm thấy một thứ gì đó giống như kỹ thuật đối sánh hình học lặp lại. – Leo

0

tôi chắc chắn rằng có một số thuật toán ranh giới bản đồ trong xử lý hình ảnh để làm điều này.

Nếu không, đây là bản sửa lỗi nhanh: chọn pixel ở trung tâm của khu vực chưa được khám phá là " ", ban đầu là toàn bộ hình ảnh. theo dõi các đường thẳng đứng và thẳng đứng ở 4 hướng mỗi kết thúc tại các đường biên giới của khu vực và tìm giá trị thay đổi từ 0 đến 1 hoặc ngược lại.

Theo dõi từng công tắc giá trị như vậy và hoàn thành đường biên của mỗi hình (Bước-A). Làm tương tự cho các khu vực mà vẫn chưa được khám phá: bắt đầu tại một số trung tâm điểm và lướt qua các đường nối trung tâm với đường viền hình ảnh hoặc đến pixel tại ranh giới của một khu vực đã biết.

Ở bước A, bạn cũng có thể kiểm tra xem ranh giới bạn truy tìm có phải là một đường hoặc đường cong hay không. Bất cứ khi nào nó là một đường cong, bạn chỉ cần hai điểm trên nó - điểm ở khoảng cách nào đó với nhau để tính chính xác của phép tính.

Đường thẳng vuông góc với hai điểm tiếp tuyến này cắt nhau ở giữa vòng tròn màu đỏ trong hình của bạn.

0

Bạn có thể phân đoạn hình ảnh. Sau đó, chỉ sử dụng các pixel trong các phân đoạn để đóng góp cho biến đổi Hough để tìm các vòng tròn. Sau đó, bạn sẽ chỉ có các phân đoạn có vòng tròn trong đó. Bạn có thể sử dụng biến đổi hough đã sửa đổi để tìm hình chữ nhật. Kết hợp hình chữ nhật và hình chữ nhật 'tốt nhất' sẽ là kết hợp của bạn. Điều này là rất có tính toán intentsive.

Một cách tiếp cận khác, nếu bạn đã có những hình ảnh nhị phân này, là chuyển đổi thành mẫu (ví dụ 256 bin) bằng cách lấy khoảng cách đến centroid so với khoảng cách đi dọc theo cạnh.Nếu bạn bắt đầu từ điểm xa nhất từ ​​centroid bạn có một featurevector mạnh mẽ quay khá.