Những kỹ thuật xử lý hình ảnh nào là lý tưởng cho việc khớp mẫu bất biến thay đổi / tỷ lệ cụ thể này?


17

Một vấn đề ban đầu tôi đã thảo luận ở đây đã phát triển, và có thể đã đơn giản hơn một chút khi tôi nghiên cứu nó trong một số chi tiết và đạt được thông tin mới.

Tóm lại, tôi muốn có thể phát hiện mẫu này được hiển thị ở đây, bằng cách sử dụng các kỹ thuật xử lý hình ảnh / thị giác máy tính. Như bạn có thể thấy, mô hình lý tưởng được tạo thành từ bốn 'ping'. Nhận dạng đối tượng phải là:

  • Sự thay đổi bất biến
    • Theo chiều ngang, hình ảnh sẽ theo chu kỳ. (nghĩa là Đẩy sang phải, đi ra bên trái và ngược lại).
    • (May mắn thay) Theo chiều dọc, nó không theo chu kỳ. (tức là Đẩy lên đỉnh hoặc đáy và nó sẽ dừng lại).
  • Tỷ lệ bất biến (Các ping có thể thay đổi về 'độ dày' như bạn có thể thấy.)

Tôi có thể tiếp tục và về nó nhưng tôi đã đính kèm hình ảnh bao gồm những gì tôi muốn nói, xin vui lòng xem bên dưới:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Tất nhiên, chúng cũng có thể ở một 'quy mô' khác, như có thể thấy từ gia đình này:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Và cuối cùng, đây là một số tình huống 'thực tế' về những gì tôi thực sự có thể nhận được, nơi sẽ có nhiễu, các hàng có thể 'mờ dần' khi bạn đi xuống phía dưới, và tất nhiên, hình ảnh sẽ có nhiều đường nét giả, tạo tác , Vân vân.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Và tất nhiên, như một trận chung kết lớn, có khả năng khác biệt của kịch bản 'cực đoan' này:

nhập mô tả hình ảnh ở đây

Vì vậy, một lần nữa, tôi muốn hỏi một số hướng dẫn về những kỹ thuật thị giác máy tính nào tôi nên sử dụng ở đây để phát hiện tốt nhất sự xuất hiện của mẫu của tôi, nơi tôi cần thay đổi và thay đổi tỷ lệ bất biến như bạn có thể thấy, và cũng có thể nhận được kết quả tốt cho các kịch bản thực tế. (Tin tốt là tôi KHÔNG cần nó là bất biến xoay vòng). Chỉ có ý tưởng tôi có thể đưa ra cho đến nay là mối tương quan 2 chiều.

Tôi nên nói thêm rằng, trong thực tế, tôi KHÔNG có hình ảnh màu - tôi sẽ chỉ nhận được một số lượng lớn các con số, vì vậy tôi cho rằng chúng ta đang nói về 'thang độ xám'.

Cảm ơn trước!

PS Vì giá trị của nó, tôi có thể sẽ sử dụng C V. mở

EDIT # 1:

Dựa trên các ý kiến, tôi đã thêm các chi tiết bạn yêu cầu ở đây:

Đối với các đặc điểm xác định dữ liệu, chúng ta có thể giả sử như sau:

  • Độ dài ngang của mỗi ping có thể khác nhau, nhưng tôi biết giới hạn trên và dưới của nó. CÓ cho bất cứ điều gì trong giới hạn này, KHÔNG cho bất cứ điều gì bên ngoài. (Ví dụ, tôi biết chiều dài của các ping có thể ở bất cứ đâu trong khoảng từ 1 đến 3 giây chẳng hạn).

  • Tất cả các ping cần phải được 'hiển thị' cho CÓ, tuy nhiên, hàng cuối cùng có thể bị thiếu và vẫn muốn nói 'CÓ'. Nếu không thì KHÔNG.

  • Độ dài dọc, ('độ dày') của mỗi ping có thể khác nhau, nhưng một lần nữa, cũng biết giới hạn trên và dưới. (Tương tự như những gì bạn nhìn thấy trong những hình ảnh đó). CÓ cho bất cứ điều gì trong giới hạn đó. KHÔNG cho bất cứ điều gì bên ngoài.

  • Chiều cao giữa mỗi ping phải luôn giống nhau cho CÓ. Nếu họ không, thì KHÔNG. (Ví dụ, bạn có thể thấy tất cả các ping có cùng chiều cao so với nhau, ~ 110 trên trục tung). Vì vậy, 110 +/- 5 có thể là CÓ, bất cứ điều gì khác phải là KHÔNG.

Tôi nghĩ đó là về nó - nhưng hãy cho tôi biết những gì tôi có thể thêm ... (Ngoài ra, mọi thứ hiển thị ở đây nên đăng ký là CÓ, btw).


Ý bạn là gì khi bạn nói detect this pattern shown here? Bạn chỉ quan tâm đến việc cô lập đường màu đỏ / vàng hay bạn thực sự muốn biểu thức tính toán mối quan hệ giữa các dòng đó. Chỉ tìm dòng chỉ có thể yêu cầu một số ngưỡng hoặc phân đoạn. Bạn có thực sự muốn gì?
Dipan Mehta

@DipanMehta Xin lỗi vì sự nhầm lẫn. Những gì tôi muốn làm là thế này: Trước hết, đừng chú ý đến màu sắc, (chỉ là nói chúng được vẽ), những gì tôi sẽ có chỉ là một ma trận các con số, vì vậy, thang độ xám. Điều thứ hai, vì không có màu sắc, tôi chỉ quan tâm đến 'mẫu' bạn thấy ở đó với 4 ping bạn đang thấy lặp lại. Vì vậy, máy dò sẽ thấy các biến thể của mẫu hình ảnh đó như được hiển thị trong các hình ảnh ở trên và nói 'có, mẫu này tồn tại'. Xin lỗi vì sự nhầm lẫn, cho tôi biết nếu tôi có thể làm rõ bất cứ điều gì khác. Cảm ơn!
Spacey

Ok, vì vậy nếu bạn hiểu chính xác, với điều kiện là có dòng đầu tiên trên đầu, bạn muốn tìm hiểu xem số dư cũng ở cùng một chỗ. Nếu vậy, bạn sẽ kết luận rằng mô hình tồn tại! Đúng?
Dipan Mehta

@DipanMehta Có về cơ bản, có thể phát hiện nếu mẫu hiển thị ở trên tồn tại, đủ mạnh để xử lý bất biến quy mô và đủ mạnh để xử lý bất biến thay đổi. Điều đó có ý nghĩa? Cảm ơn,
Spacey

1
Những gì tôi nhận được là liệu bạn có quyền truy cập vào dữ liệu nguồn trong hệ thống thực tế mà bạn đang làm việc không. Nếu bạn làm như vậy, thì có thể có một cách tiếp cận tốt hơn hoạt động trực tiếp trên dữ liệu gốc thay vì định dạng phổ phổ trung gian mà bạn đã chọn.
Jason R

Câu trả lời:


6

Nói rộng ra, có hai cách tiếp cận chính để giải quyết vấn đề này:

a. khớp mẫu hoặc
b. phù hợp với một mô hình tham số.

Cá nhân, do sự đơn giản của mô hình, tôi thích cách tiếp cận thứ hai cho vấn đề này.

Bước 1: Xác định các đốm màu ping

Bước đầu tiên, trích xuất "Hộp" - về cơ bản là các ô vuông màu vàng / xanh. Một phương pháp đơn giản nhất ở đây có thể là chỉ ngưỡng hình ảnh. Dường như không có nhiều biến thể trong nền ngoại trừ khi nhiễu tăng lên, nó có xu hướng khá giống với ping. Do đó, ngưỡng có thể là toàn cầu trên hình ảnh - và tôi nghĩ rằng bạn sẽ có thể có được một ngưỡng tốt có thể hoạt động trên các hình ảnh. Tuy nhiên, ngưỡng phải thông minh để bạn có thể sử dụng một cái gì đó như phương pháp của Otsu. Xem cái nàycái này để tham khảo thêm.

Cải thiện các khối

Một trong những điều tốt bạn có thể làm để loại bỏ các điểm giả trông giống như ping foreground trong đó một số pixel bên trong ping cũng có màu xanh. Bạn cần ở đây một hoạt động hình thái gọi là "Khai trương". Đây là một trong những tài liệu tham khảo từ HIPR . Những loại hoạt động này đòi hỏi hình dạng thông minh giúp bảo tồn các hình dạng tương tự và loại bỏ các hình dạng khác. Trong trường hợp của bạn, bạn có thể chọn các đường ngang. Đến cuối phần này, bạn có các pixel nền và tiền cảnh ngăn cách gọn gàng các ping mà không chạm vào nhau.

Bước 2: Đánh dấu / Đăng ký khối

Bây giờ bạn đã có các đốm sạch nhất có thể, thời gian để đánh dấu chúng là 1,2,3,4 hoặc A, B, C, D, v.v. Điều này thường được thực hiện bằng một thuật toán đơn giản. Chạy qua từng pixel và nếu nó chạm vào bất kỳ vùng được đánh dấu nào, và cũng là tiền cảnh thì gán nó cho phân đoạn đó, tạo một vùng mới. Nếu bạn tình cờ tìm thấy hơn 4 phân khúc quan trọng, bạn cần chọn những phân khúc phù hợp nhất. Áp dụng một số heuristic ở đây hơn là bất kỳ thuật toán lý thuyết.

Bước 3: Mô hình hóa các tham số

Bây giờ, một khi chúng tôi nhận được 4 ứng cử viên hàng đầu trong số 4 ping tương ứng, bạn có thể xác định các hộp giới hạn - về cơ bản là các góc trên cùng bên trái và dưới cùng bên phải (hoặc hầu hết các pixel trên cùng và bên phải, cũng như các hàng trên cùng và dưới cùng của blob) . Tìm hộp giới hạn, bạn có thể bị phạt centroid của mỗi hộp ping.

CTôi Ở đâu Tôi{1,2,3,4}C1C1

do đó khoảng cách giữa các nhân có thể được tính toán:

C1Tôi[x,y]= ={C1[x]-CTôi[x],C1[y]-CTôi[y]}

LTôi Ở đâu Tôi{1,2,3,4}

Về cơ bản bạn có 8 tham số vecoter:

1.{C1[x],C1[y]}2..4C1Tôi[x,y]5..8LTôi

Bước 4: Phân loại
Trong bước cuối cùng, bây giờ chúng ta cần phải phân loại xem có mẫu ping có hay không.

Đối với một cái gì đó như thế này, bạn có thể có một khung phân loại Bayes đẹp.

Có hai giả thuyết bạn có

H0: Mẫu ping tồn tại.
H1: Mẫu ping không tồn tại

C1,Tôi[x]

Đầu tiên bạn nghiên cứu rất nhiều hình ảnh mà bạn biết chúng thuộc về hình ảnh. Bây giờ, bạn có thể vẽ biểu đồ khác nhau hoặc áp dụng một số phương pháp ước tính mật độ. Đọc Phân loại mẫu của Duda Hart.

C1,Tôi[x]μ= =20,σ= =.1

C1,TôiH0P[C1,Tôi[x]|H0]

Bây giờ, từ dữ liệu thử nghiệm

P[H0|C1,Tôi[x]= =x1]C1[x]x1H0

Do đó, bạn có thể tính toán

P[H0 |C1,Tôi[x]]= =P[C1,Tôi[x]|H0]*P[H0]P[C1,Tôi[x]]

Bạn cần kết hợp biểu thức này cho biểu thức vectơ và cần điền rất nhiều nỗ lực để thực hiện chính xác việc ước tính tham số. Nhưng tôi sẽ để lại cho bạn với cách tiếp cận cơ bản ở đây.

Hãy làm toán của riêng bạn, việc này sẽ kéo dài, nhưng vẫn khá trực quan.

P[H0|tất cả các thông số]>1/2

EDIT
Vì bạn đã xác định tiêu chí cụ thể là 110 +/- 5 pixel, bước cuối cùng có thể đơn giản hơn. Bạn có thể không cần phải tính toán tất cả các xác suất này nếu tiêu chí phân loại của bạn là cố định.


Cảm ơn rât nhiều! Tôi sẽ phải tiêu hóa điều này và lấy lại cho bạn.
Spacey

3

Vấn đề này dường như với tôi như xung lặp lại khoảng thời gian phát hiện + ước tính vấn đề. Tôi sẽ cần phát triển câu trả lời này theo thời gian, nhưng loại thuật toán hoạt động tốt trong vấn đề đókhả năng tối đa trên một mạng .


Cảm ơn bạn, vâng tôi sẽ rất vui khi nghe suy nghĩ của bạn về điều này. Trong khi đó tôi sẽ xem qua liên kết của bạn.
Spacey

Peter, bạn đã có thời gian để nghĩ về điều này như bạn đã đề cập? Tôi sẽ quan tâm đến việc nghe suy nghĩ của bạn về vấn đề này.
Spacey

Chỉ cần bắt đầu mày mò một lần nữa (tháng tư là một sự xóa sổ). Tôi có thể nhầm lẫn: cách bài báo của Clarkson hình thành vấn đề là khác nhau ... hãy để tôi khai thác thêm một chút.
Peter K.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.