Phát hiện các dòng sông uốn khúc trong hình ảnh


14

Tôi có bề mặt: với thuộc tính đo lường (biến) trên mỗi bề mặt: . Hầu hết các bề mặt sẽ có sự phân bố ngẫu nhiên của thuộc tính trên bề mặt, nhưng một số bề mặt (những bề mặt thú vị) sẽ hiển thị mô hình sông uốn khúc:nzTôi(x,y)mộtTôi(x,y)

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

Tôi cần sự giúp đỡ của bạn trong việc đưa ra một biện pháp sẽ cho chúng ta biết bề mặt nào của có nhiều khả năng có một mẫu như vậy.n

Có nhiều bản đồ có thể có cùng biểu đồ như dưới đây; vì vậy biện pháp này cần "thưởng" liên tục không gian. Để minh họa điều này, tôi đã tạo ra một hình ảnh ngẫu nhiên với biểu đồ gần giống với hình ảnh dòng sông: nhập mô tả hình ảnh ở đây

Vì vậy, thống kê hình ảnh ala entropy có thể chỉ là một phần của giải pháp.

Dưới đây là một ví dụ về hình ảnh không có mẫu sông uốn khúc: nhập mô tả hình ảnh ở đây

Hình ảnh của tôi là tổng hợp (sản xuất tại Matlab). Trong cuộc sống thực, hình ảnh không có hoa văn có thể có phần liên tục không gian hơn ở dạng các đốm nhỏ có giá trị tương tự.

Dưới đây là những hình ảnh trong thang độ xám:

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


1
Bạn có thể đăng hình ảnh thực tế (không có trục, bảng màu, biểu đồ, để chúng tôi có thể thử các thuật toán khác nhau không?). Ngoài ra: "dòng sông uốn khúc" có thực sự là một hình sin hay nó có thể có hình dạng nào không?
Niki Estner

1
Chào nikie. Trong ví dụ của tôi (dữ liệu tổng hợp được thực hiện trong Matlab), dòng sông là một hình sin. Trong cuộc sống thực, nó là "hình sin"; đôi khi nó đi rộng từ đường trung tâm, đôi khi không.
Andy

Câu trả lời:


13

Một biện pháp rất đơn giản sẽ là so sánh từng hàng trong ảnh với hàng phía trên nó, cho phép một số dịch chuyển ngang.

Tôi đã hack cùng thuật toán đơn giản này trong Mathematica:

Mean[MapThread[
  Function[{line1, line2},
   Min[Table[Norm[line1 - RotateLeft[line2, shift]], {shift, -5, 5}]]
   ], {s[[2 ;;]], s[[;; -2]]}]]

Nó chỉ đơn giản là lấy từng cặp hàng liền kề, xoay một trong các hàng bằng -5..5 pixel và lấy khoảng cách euclide nhỏ nhất. Điều này mang lại một khoảng cách euclide cho mỗi cặp hàng. Tôi chỉ đơn giản là lấy giá trị trung bình (nhưng tùy thuộc vào dữ liệu thực tế của bạn, giá trị trung bình hoặc trung bình bị cắt ngắn có thể mạnh hơn).

Đây là những kết quả tôi nhận được cho các mẫu được tạo giả tạo (Công thức: Chuẩn hóa (nhiễu ngẫu nhiên * (1 yếu tố) + tín hiệu * hệ số))

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

Nếu tôi vẽ kết quả dựa trên cường độ tín hiệu, thuật toán dường như đo lường "cường độ tín hiệu sông uốn khúc" khá tốt:

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

EDIT : Tôi quên bình thường hóa các mẫu đầu vào. Đã sửa lỗi hình ảnh kết quả mới được tải lên


Câu trả lời tốt. Tuy nhiên, tôi nghĩ rằng biện pháp của bạn có thể bị đánh lừa bởi một đường cong liên tục khác, như đường thẳng. Tôi sẽ cải thiện điều đó một chút bằng cách thay đổi bước cuối cùng để khớp một sin với các điểm (x, y) mà bạn đã tìm thấy, với một số biên độ, pha và tần số. Sau đó, biên độ có thể dùng để đo lường "cường độ dòng sông".
Andrey Rubshtein

4

Bạn dường như đang đi đúng hướng với biểu đồ đó. Nếu đây là hình ảnh đại diện từ mẫu của bạn thì biểu đồ đó cho thấy rằng hình ảnh có mẫu uốn khúc có thể được phát hiện chỉ bằng cách kiểm tra xem chúng có chứa các giá trị vượt quá ngưỡng nhất định hay không.

Khác với điều này, bạn có thể thử lấy entropy của mỗi hình ảnh. Điều đó sẽ cung cấp cho bạn một số cho mỗi hình ảnh đặc trưng cho tính ngẫu nhiên của nó. Sau đó, bạn có thể có được một biểu đồ của các entropies của hình ảnh của bạn. Nếu bạn chắc chắn rằng các hình ảnh được phân chia rõ ràng thành "hoàn toàn ngẫu nhiên" và "ngẫu nhiên với một lần uốn khúc" (tức là ít ngẫu nhiên hơn), thì biểu đồ của các entropies sẽ là lưỡng kim. Chế độ bên trái sẽ tương ứng với hình ảnh có entropy thấp hơn và do đó ít ngẫu nhiên hơn (nhiều khả năng chứa mẫu uốn khúc) và ngược lại cho chế độ bên phải.

(BTW MATLAB bao gồm một chức năng có liên quan )

EDIT: Là phản hồi cho các bình luận của OP và sau đó tải lên thêm thông tin về vấn đề, đây là một điểm bổ sung cho câu trả lời này:

Entropy vẫn hoạt động nhưng không phải là trường hợp không có bộ nhớ đơn giản được mô tả theo công thức của Shannon (trong đó mỗi mẫu của chuỗi thời gian được coi là độc lập với các mẫu trước đó).

Là một giải pháp thay thế đơn giản hơn, sau đó bạn có thể thử kiểm tra các tính năng tự tương quan của hình ảnh .


Xin chào A_A. Tôi nghĩ rằng thống kê hình ảnh là một phần của giải pháp nhưng người ta cần phải cân nhắc các pixel lân cận bằng cách nào đó để thưởng cho tính liên tục không gian (xem Bản đồ thuộc tính ngẫu nhiên ở trên).
Andy

Xin chào, tôi đồng ý và đã tăng câu trả lời.
A_A
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.