Theo dõi một Isoline của một chức năng 2D đắt tiền


10

Tôi có một vấn đề tương tự trong công thức của bài đăng này, với một vài khác biệt đáng chú ý:

Có những phương pháp đơn giản nào để lấy mẫu thích ứng một chức năng 2D?

Giống như trong bài viết đó:

  • Tôi có một và việc đánh giá hàm này hơi tốn kém để tính toánf(x,y)

Không giống như trong bài viết đó:

  • Tôi quan tâm không phải là giá trị của hàm một cách chính xác ở mọi nơi, mà chỉ trong việc tìm kiếm một isocontour duy nhất của hàm.

  • Tôi có thể đưa ra những khẳng định quan trọng về sự tự tương quan của hàm và kết quả là độ mịn.

Có một cách thông minh để bước cùng / lấy mẫu hàm này và tìm đường viền này?

Thêm thông tin

Hàm này là tính toán của các tính năng Haralick trên pixles xung quanh điểm và phân loại mềm theo một số loại phân loại / hồi quy. Đầu ra của số này là một số dấu phẩy động cho biết kết cấu / vật liệu mà điểm đó thuộc về. Tỷ lệ của số này có thể được ước tính xác suất lớp (SoftSVM hoặc phương pháp thống kê, v.v.) hoặc một cái gì đó thực sự đơn giản như đầu ra của hồi quy tuyến tính / logistic. Phân loại / hồi quy là chính xác và rẻ so với thời gian trích xuất tính năng từ hình ảnh.N

Nf(x,y,N)NN

Những điều tôi đã thử:

  • N

  • Bước Dumb - Thực hiện một "bước" pixel duy nhất theo từng hướng và chọn hướng để di chuyển dựa trên mức độ gần với giá trị đường đẳng. Vẫn còn khá chậm, và nó sẽ bỏ qua sự phân chia của một isoline. Ngoài ra, trong các khu vực có độ dốc bằng phẳng, nó sẽ "đi lang thang" hoặc tự nhân đôi.

N


Tôi có chính xác cùng một vấn đề, ngoại trừ đó là chức năng khả năng tôi muốn tạo đường viền và nó rất tốn kém vì tại mỗi thời điểm tôi cần thực hiện giảm thiểu. Bạn đã thực hiện bất kỳ tiến bộ và / hoặc bạn có thể chỉ ra làm thế nào cuối cùng bạn đã đi về điều này?
adavid

Tôi chỉ kiểm tra giải pháp tôi hội tụ. (xem bên dưới)
meawoppl

Câu trả lời:


4

Có một bài báo về đồ họa máy tính có tên là Lấy mẫu tốt và Chia lưới bề mặt , dựa vào bạn cung cấp một lời sấm xác định tất cả các giao điểm của một isoline với một đoạn đường nhất định. Cùng với đó, nó lấy mẫu tất cả các đường viền giả sử bạn có thể cung cấp thang đo tính năng cục bộ (giống như độ cong cục bộ tối đa) và một tập hợp các phân đoạn dòng ban đầu giao với tất cả các đường viền. Nó không phải là điều đơn giản nhất để thực hiện, vì nó dựa vào tính toán các tam giác Delaunay, nhưng nó được thực hiện trong 3D trong CGAL . Nó đơn giản hơn nhiều trong 2D, vì phần mềm tam giác tốt như Triangle tồn tại. Ở một khía cạnh nào đó, điều này khá gần với điều tốt nhất bạn có thể làm.


Tôi thực sự thích công thức này vì nó cũng mở rộng một cách hợp lý thành 3d khá sạch sẽ. Tôi phải xây dựng điều này bằng Python, vì vậy tôi đã có quyền truy cập vào gói Delauny của qhull, vì vậy đó không phải là một vấn đề lớn. Hãy để tôi xem nếu tôi có được bản tóm tắt này ngay: - Thực hiện một số mẫu để gieo hạt. - Mẫu tam giác. - Đối với tất cả các cạnh trải dài isoline trên một số độ dài: tính các giao điểm của isoline với cạnh - tất cả các tính toán cho các mẫu và lặp lại từ bước tam giác?
meawoppl

@meawoppl: Cá nhân tôi chưa thực hiện hoặc sử dụng thuật toán này (chưa!) nhưng điều đó nghe có vẻ đúng.
Victor Liu

Tôi sẽ xóa sạch điều này ngày hôm nay, và đăng một số kết quả!
meawoppl

Xin lỗi về sự chậm trễ. Phương pháp này hoạt động thực sự tốt cho tập dữ liệu của tôi. Về cơ bản, tôi gieo hạt cho nó một lưới thông thường để lấy mẫu để bắt đầu, sau đó tam giác hóa, chia nhỏ các cạnh đi qua đường viền iso, lặp lại. Thật khó để thể hiện yêu cầu "tính năng tốt nhất" và có giá trị đối với việc lấy mẫu ban đầu ngẫu nhiên so với, thông thường là một đường chéo isoline mất nhiều thời gian hơn so với yêu cầu của việc lấy mẫu. Cuối cùng tôi chỉ để nó mất tối đa 5 đường chuyền, và điều đó đã hoạt động như một bài phê bình thực sự đơn giản. Wooo> 1K
meawoppl

1

Bạn có thể thử áp dụng các tính năng cốt lõi của phương pháp Phân tích độ tin cậy toàn cầu hiệu quả (EGRA). Phương pháp này được rút ra để tính toán hiệu quả xác suất thất bại, nhưng sự can đảm của nó tập trung vào việc thực hiện những gì bạn mô tả - tạo ra một mô hình chính xác chỉ gần một đường viền cụ thể.

Đây có thể là một điểm khởi đầu thú vị, nhưng tôi không chắc nó sẽ giải quyết vấn đề của bạn. Nó phụ thuộc rất nhiều vào hình dạng của chức năng của bạn. Nếu đó là một cái gì đó có thể được xấp xỉ tốt với một mô hình giết chết , thì nó sẽ hoạt động tốt. Những mô hình này khá linh hoạt, nhưng nhìn chung cần một chức năng cơ bản trơn tru. Trước đây, tôi đã thử áp dụng EGRA cho một ứng dụng phân đoạn hình ảnh, nhưng không mấy thành công vì đơn giản là nó không phù hợp với mô hình thay thế cho một thứ không thực sự được xác định bởi mối quan hệ chức năng. Tuy nhiên, tôi đề cập đến nó như một cái gì đó bạn có thể muốn xem xét trong trường hợp ứng dụng của bạn khác với tôi đang hình dung.

Nếu tôi không nói với bạn về điều đó, bạn có thể đọc thêm về EGRA tại đây (liên kết PDF) và tại đây , và có một triển khai hiện có trong dự án DAKOTA của Sandia - theo hiểu biết của tôi, triển khai EGRA nguồn mở duy nhất hiện có.

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.