Lacak Isoline dari Fungsi 2D yang Mahal


10

Saya memiliki masalah yang mirip dalam perumusan dengan posting ini, dengan beberapa perbedaan penting:

Apa metode sederhana yang ada untuk pengambilan sampel fungsi 2D secara adaptif?

Seperti di pos itu:

  • Saya memiliki dan evaluasi fungsi ini agak mahal untuk dihitungf(x,y)

Berbeda dengan di pos itu:

  • Saya tertarik bukan pada nilai fungsi secara akurat di mana-mana, tetapi hanya menemukan satu isocontour fungsi.

  • Saya dapat membuat pernyataan signifikan tentang autokorelasi fungsi, dan akibatnya skala kelancaran.

Apakah ada cara cerdas untuk menyusuri / mencicipi fungsi ini dan menemukan kontur ini?

Informasi Lebih Lanjut

Fungsinya adalah penghitungan Fitur Haralick di atas piksel di sekitar titik, dan klasifikasi lunak oleh semacam classifier / regressor. Output dari ini adalah angka floating point yang menunjukkan tekstur / material yang dimiliki titik tersebut. Penskalaan angka ini dapat diperkirakan probabilitas kelas (SoftSVM atau metode statistik, dll) atau sesuatu yang sangat sederhana seperti output dari regresi linier / logistik. Klasifikasi / regresi akurat dan murah dibandingkan dengan waktu yang dibutuhkan untuk ekstraksi fitur dari gambar.N

Statistik di sekitar berarti bahwa jendela tersebut biasanya mengambil sampel daerah yang tumpang tindih, dan dengan demikian ada korelasi yang signifikan antara sampel terdekat. (Sesuatu yang saya dapat mendekati secara numerik / simbolis) Akibatnya, ini dapat dianggap sebagai fungsi yang lebih kompleks dari mana lebih besar akan memberikan perkiraan yang lebih terkait dengan lingkungan (berkorelasi tinggi), dan semakin kecil akan memberikan lebih banyak variabel, tetapi lebih banyak perkiraan lokal. Nf(x,y,N)NN

Hal yang Saya Coba:

  • Komputasi Brute - Berfungsi dengan baik. 95% segmentasi yang benar dengan konstan . Hasilnya terlihat fantastis ketika berkontur menggunakan metode standar apa pun setelah itu. Ini berlangsung selamanya . Saya dapat menyederhanakan fitur yang dihitung berdasarkan per sampel, tetapi idealnya saya ingin menghindari ini untuk menjaga kode ini umum untuk gambar dengan tekstur yang perbedaannya muncul di berbagai bagian ruang fitur. N

  • Dumb Stepping - Ambil "langkah" piksel tunggal di setiap arah dan pilih arah untuk bergerak berdasarkan kedekatan dengan nilai garis iso. Masih cukup lambat, dan itu akan mengabaikan bifurkasi isoline. Juga, di daerah dengan gradien datar itu akan "berkeliaran" atau menggandakan diri.

Saya pikir saya ingin melakukan sesuatu seperti subdivison yang diusulkan pada tautan pertama, tetapi dipangkas untuk kotak-kotak yang mengikat isoline of interest. Saya merasa saya harus dapat memanfaatkan juga, tetapi saya tidak yakin bagaimana cara mendekati itu. N


Saya memiliki masalah yang persis sama, kecuali bahwa itu adalah fungsi kemungkinan yang ingin saya kontur dan itu mahal karena pada setiap titik saya perlu melakukan minimalisasi. Apakah Anda membuat kemajuan dan / atau dapatkah Anda menunjukkan bagaimana akhirnya Anda menyelesaikannya?
adavid

Saya baru saja memeriksa solusi yang saya konvergensi. (lihat di bawah)
meawoppl

Jawaban:


4

Ada sebuah kertas dalam grafik komputer yang disebut Sampling Terbukti Baik dan Penyatuan Permukaan , yang bergantung pada Anda memberikan ramalan yang menentukan semua persimpangan isolin dengan segmen garis tertentu. Dengan itu, sampel semua kontur dengan asumsi Anda dapat memberikan skala fitur lokal (sesuatu seperti lengkungan lokal maksimum), dan set awal segmen garis yang memotong semua kontur. Ini bukan hal yang paling sederhana untuk diterapkan, karena bergantung pada komputasi triangulasi Delaunay, tetapi diimplementasikan dalam 3D di CGAL . Ini jauh lebih sederhana dalam 2D, karena perangkat lunak triangulasi yang bagus seperti Triangle ada. Dalam beberapa hal, ini cukup dekat dengan yang terbaik yang dapat Anda lakukan.


Saya sangat suka formulasi ini karena secara logis meluas ke 3d agak bersih. Saya harus merumuskan ini dengan Python, jadi saya sudah memiliki akses ke pembungkus Delauny qhull, jadi itu bukan masalah besar. Biarkan saya melihat apakah saya mendapatkan ringkasan ini dengan benar: - Lakukan beberapa sampling untuk seed. - Melakukan triangulasi sampel. - Untuk semua tepi yang merentang isoline di atas beberapa panjang: menghitung persimpangan isoline dengan tepi - semua dihitung pada sampel, dan ulangi dari langkah triangulasi?
meawoppl

@meawoppl: Saya belum mengimplementasikan atau menggunakan algoritma ini secara pribadi (belum!) tapi itu kedengarannya benar.
Victor Liu

Saya akan menghapus ini hari ini, dan memposting beberapa hasil!
meawoppl

Maaf atas keterlambatannya. Metode ini bekerja sangat baik untuk kumpulan data saya. Pada dasarnya, saya menambakannya dengan mesh biasa untuk sampel untuk memulai, kemudian melakukan triangulasi, membagi tepi yang melewati kontur iso, pengulangan. Agak sulit untuk mengungkapkan persyaratan "fitur terbaik", dan ada baiknya untuk pengambilan sampel awal acak vs, teratur karena isolat diagonal membutuhkan waktu lebih lama daripada yang mengikuti penyewa sampel. Saya akhirnya hanya membiarkannya mengambil paling banyak 5 pass, dan itu bekerja sebagai kriteria berhenti yang sangat sederhana. Wooo> 1K
meawoppl

1

Anda dapat mencoba menerapkan fitur-fitur inti dari metode Efficiency Global Reliability Analysis (EGRA). Metode ini diturunkan untuk perhitungan yang efisien dari kemungkinan kegagalan, tetapi keberaniannya difokuskan pada melakukan apa yang Anda gambarkan - menciptakan model yang akurat hanya di dekat kontur minat tertentu.

Ini mungkin titik awal yang menarik, tapi saya tidak yakin itu akan menyelesaikan masalah Anda. Itu sangat tergantung pada bentuk fungsi Anda. Jika itu adalah sesuatu yang dapat didekati dengan baik dengan model kriging , maka itu harus berkinerja baik. Model-model ini cukup fleksibel, tetapi umumnya membutuhkan fungsi dasar yang halus. Saya telah mencoba menerapkan EGRA ke aplikasi segmentasi gambar di masa lalu, tetapi sedikit berhasil karena itu tidak masuk akal untuk menyesuaikan model pengganti dengan sesuatu yang tidak benar-benar ditentukan oleh hubungan fungsional. Namun, saya menyebutkannya sebagai sesuatu yang Anda mungkin ingin melihat jika aplikasi Anda berbeda dari yang saya bayangkan.

Jika saya belum membicarakannya, Anda dapat membaca lebih lanjut tentang EGRA di sini (tautan PDF) dan di sini , dan ada implementasi yang ada dalam proyek DAKOTA Sandia - sepengetahuan saya, satu-satunya implementasi open-source EGRA yang tersedia.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.