Mendeteksi Jejak dalam Gambar Hutan

30

Adakah yang mengetahui adanya penelitian / makalah / perangkat lunak untuk mengidentifikasi jejak (sebagai garis atau kurva titik-ke-titik) dalam gambar pemandangan hutan (dari perspektif kamera berdiri di suatu tempat di sepanjang jejak)?

Saya mencoba menemukan algoritme yang dapat mengambil gambar seperti:

teks alternatif

dan menghasilkan topeng, mengidentifikasi kemungkinan "jejak", seperti:

teks alternatif

Seperti yang Anda lihat, gambar aslinya agak buram, yang memiliki tujuan. Sumber gambar tidak dapat menjamin fokus yang sempurna, jadi saya harus dapat menangani jumlah kebisingan dan kabur yang masuk akal.

Pikiran pertama saya adalah menerapkan blur Gaussian, dan membagi gambar menjadi blok, membandingkan blok yang berdekatan untuk mencari perbedaan warna yang tajam (menunjukkan jejak "tepi"). Namun, saya dengan cepat menyadari bahwa bayangan dan perubahan lain dalam pencahayaan dengan mudah membuang itu.

Saya berpikir untuk mengekstraksi fitur SURF, tetapi saya hanya berhasil dengan SURF / SIFT ketika gambarnya sangat jelas dan dengan pencahayaan yang konsisten.

Saya juga telah mencoba menskala gambar dan topeng ke ukuran yang jauh lebih kecil (misalnya 100x75), mengubahnya menjadi vektor 1xN, dan menggunakannya untuk melatih jaringan saraf berbasis FANN (di mana gambar adalah input dan topeng adalah yang diinginkan keluaran). Bahkan pada ukuran sekecil itu, dengan 1 lapisan tersembunyi dengan 75% ukuran vektor input, butuh 6 jam untuk berlatih, dan masih tidak dapat memprediksi topeng apa pun di set pengujian.

Adakah yang bisa menyarankan metode atau makalah lain tentang masalah ini?

Cerin
sumber
1
Anda tidak menyebutkan apa-apa tentang itu, tetapi apakah Anda mengontrol akuisisi kamera / gambar? Orang-orang menggunakan indeks vegetasi menggunakan gambar inframerah dekat dalam situasi yang sama (pertimbangkan untuk menghitung cakupan hutan dari satelit). Jika Anda memiliki inframerah dekat, masalahnya langsung diselesaikan.
carlosdc
Saya lakukan, agak. Saya mengambil gambar dengan kamera bermata murah (webcam / kamera ponsel), tapi saya rasa mereka tidak menyimpan infra merah.
Cerin
Menggunakan beberapa filter warna yang dapat membedakan antara spektrum vegetasi dan kotoran mungkin akan membantu
endolith
Saya ingin tahu apakah Anda sudah mencoba pendekatan Bayesian untuk melatih dan mendeteksi. Saya punya jawaban yang saya tulis beberapa hari yang lalu, tetapi kemudian dihapus karena saya pikir Anda telah menolaknya setelah mencoba. Jika Anda belum mempertimbangkan opsi itu, dengan senang hati saya akan membatalkan pilihan itu.
Lorem Ipsum
@Yoda, Apa yang Anda maksud dengan pendekatan Bayesian? Saya hanya akrab dengan Bayesian sebagaimana diterapkan pada klasifikasi diskrit dan jaringan logis. Saya tidak terbiasa menggunakannya di CV. Saya tidak ingat melihat kiriman dari Anda.
Cerin

Jawaban:

13

Mungkin tidak cukup dengan sendirinya, tetapi karena salah satu masalah terkait dengan variasi pencahayaan, langkah pra-pemrosesan penghilangan bayangan mungkin membantu. Teknik yang saya pikirkan dijelaskan dalam makalah berikut:

"Tentang Penghapusan Bayangan Dari Gambar", GD Finlayson, SD Hordley, C. Lu, dan MS Drew, Analisis Pola IEEE dan Intelijen Mesin (PAMI), Vol.28, No.1, Jan, 2006, hlm.59- 68. http://www.cs.sfu.ca/~mark/ftp/Pami06/pami06.pdf

Bagian pertama dari proses ini menghasilkan gambar grayscale invarian pencahayaan, yang mungkin apa yang Anda inginkan dalam kasus ini. Berikut contoh yang mereka berikan di koran:

Penghapusan bayangan
(sumber: datageist.com )

Bahkan, mengambil proses satu langkah lebih jauh untuk menghasilkan gambar "kromatisitas" mungkin adalah apa yang Anda butuhkan untuk membedakan dengan jelas antara daun yang hidup dan yang mati. Sekali lagi, contoh dari kertas:

Chromaticity
(sumber: datageist.com )

Tangkapannya, bagaimanapun, adalah bahwa kamera perlu dikalibrasi terlebih dahulu. Dengan asumsi itu mungkin, beberapa kombinasi representasi yang mereka gambarkan mungkin akan membuat metode lain yang Anda gunakan lebih efektif.

datageist
sumber
12

Saya tidak percaya Anda memiliki informasi yang cukup dalam gambar sumber untuk menghasilkan gambar topeng. Anda bisa mulai dengan segmentasi pada warna, yaitu hijau bukan jejak, abu-abu / coklat. Namun, ada wilayah abu-abu / coklat di "batas jejak" yang tidak terwakili dalam topeng Anda. (Lihat kuadran kiri bawah dari gambar sumber Anda.)

Topeng yang Anda berikan menyiratkan kendala struktural yang tidak terlihat dalam gambar sumber: misalnya, mungkin jejak Anda memiliki lebar tetap - maka Anda dapat menggunakan informasi itu untuk membatasi topeng awal yang dikembalikan oleh pengenal pola Anda.

Melanjutkan topik struktur: Apakah jalur bergabung dengan yang lain? Apakah jalan digambarkan dengan fitur tanah / kerikil tertentu? Sebagai manusia (yang cukup bagus dalam pengenalan pola!), Saya tertantang oleh fitur yang ditampilkan di kuadran kiri bawah: Saya melihat wilayah abu-abu / coklat yang tidak dapat saya diskon sebagai "jejak". Mungkin saya bisa melakukannya dengan meyakinkan jika saya memiliki informasi lebih lanjut: peta dan lokasi yang diketahui secara kasar, pengalaman pribadi pada jejak ini, atau mungkin serangkaian gambar yang mengarah ke titik ini - mungkin pandangan ini tidak begitu ambigu jika pengenal "tahu" "Apa yang menyebabkan adegan ini.

Kumpulan gambar adalah pendekatan yang paling menarik menurut saya. Melanjutkan alur pemikiran itu: satu gambar mungkin tidak menyediakan data yang cukup, tetapi tampilan panorama mungkin membingungkan adegan.

Throwback1986
sumber
Ya, jalur bergabung dengan orang lain. Dan ya, jalan digambarkan oleh fitur tanah / kerikil karena fitur tersebut harus berbeda dari area non-jejak. Saya setuju, bahwa gambar mungkin menantang di beberapa bagian, tapi saya masih berpikir ada info yang cukup untuk membuat tebakan yang cukup baik tentang di mana jejaknya. Meskipun Anda tidak terbiasa dengan jejak ini, sepertinya Anda tidak punya masalah dengan itu (kecuali untuk area kiri bawah, yang dapat dimengerti).
Memang saya bisa membuat tebakan yang cukup bagus sebagai batas jalan. Tapi, saya khawatir saya lebih mengandalkan informasi daripada yang disajikan dalam gambar sumber. Saya "tahu" apa itu jejak - mungkin karena saya telah membangun model atau templat fitur-fitur penting yang terdiri dari jejak: melalui pengalaman langsung, atau melihat jejak yang jelas dalam gambar, dll. Untuk meringkas: dalam mengenali jejak di gambar sumber, saya menggambar lebih dari apa yang saya amati di gambar sumber.
Ada beberapa karakteristik jejak yang dapat dieksploitasi oleh sistem penglihatan: mungkin kita dapat mengasumsikan jejak tersebut mewakili ruang bebas yang dapat dinavigasi. Dengan demikian, fitur pohon, semak, dan batu dapat diklasifikasikan sebagai "tidak jejak". Mungkin analisis tekstur dapat membantu membedakan ini? Tapi saya tidak yakin: tanah di bawah pohon (pertengahan ke kiri atas) terlihat sangat mirip dengan jalan setapak.
Ide pertama saya adalah merujuk pada transformasi LU atau Eigen yang memberikan respons tinggi ketika tekstur sangat kasar. Namun, di sini fitur pembeda utama antara jejak / bukan jejak tampaknya berwarna. Jadi mungkin mengubahnya menjadi ruang warna HSV dan membuat topeng dari piksel yang memiliki warna 'bersahaja' - kecoklatan atau oker - akan memberikan perkiraan kasar.
AruniRC
12

Tidak ada algoritma tunggal yang secara ajaib akan mendeteksi jejak dalam gambar acak. Anda perlu menerapkan rutin berbasis pembelajaran mesin dan "melatih" itu untuk mendeteksi jejak. Tanpa membahas terlalu banyak detail, inilah garis besar kasar dari apa yang akan Anda lakukan dalam pendekatan pembelajaran yang diawasi.

  1. Anda akan memerlukan satu set "contoh pelatihan", yang saya maksudkan beberapa gambar jalan di lingkungan yang berbeda, di mana Anda (pengawas) telah memberi label apa yang dianggap sebagai "jejak" dan apa latar belakang "hutan". Anda memecah gambar menjadi bagian yang lebih kecil (biasanya 8x8) dan mengubahnya menjadi "ruang fitur" dengan mengambil DCT (diskrit cosinus transform) dari blok. DCT dari setiap blok dalam hal ini memberi Anda "vektor fitur" 64 poin.
  2. XxYy1=traily2=forest

    • distribusi bersyarat kelas
      • PX|Y(x|trail)trail
      • PX|Y(x|forest)forest
    • probabilitas kelas atau sebelumnya
      • PY(trail)trail
      • PY(forest)forest
  3. Dengan ini, Anda menguji gambar Anda (sekali lagi, memecahnya menjadi potongan-potongan kecil) dan menghitung probabilitas posterior. Menggunakan teori keputusan Bayes, Anda akan mendefinisikan kriteria pemilihan biner Anda (dalam hal ini)

    y~i(x)=argmaxyiPX|Y(x|yi) PY(yi)

Perhatikan bahwa ini adalah gambaran umum pendekatan yang sangat sederhana. Ada beberapa hal yang perlu dipertimbangkan dan yang paling penting adalah memilih set fitur yang tepat untuk masalah Anda. Anda juga dapat melakukan hal-hal yang lebih rumit seperti menggunakan model campuran dan estimasi kepadatan berbasis kernel, tetapi semua itu terlalu rinci dan memakan waktu untuk menulis jawaban.

Untuk motivasi dan konfirmasi bahwa pendekatan ini layak untuk dicoba, berikut ini adalah contoh dari sesuatu yang saya lakukan sejak lama sebagai pekerjaan rumah, yang sangat mirip dengan apa yang ingin Anda capai. Tujuannya adalah untuk mendeteksi hewan dari vegetasi latar belakang (gambar kiri). Gambar di sebelah kanan menunjukkan topeng biner yang diperoleh setelah "belajar" untuk membedakan antara latar depan dan latar belakang.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Untuk mempelajari lebih lanjut tentang pembelajaran mesin, Anda mungkin ingin melihat beberapa buku teks. Salah satu buku teks yang terkenal dan sering direkomendasikan di lapangan adalah:

T. Hastie, R. Tibshirani dan J. Friedman, Elemen Pembelajaran Statistik: Penambangan Data, Inferensi, dan Prediksi. 2nd Ed., Springer-Verlag (2008)

yang sekarang tersedia sebagai PDF gratis di tautan yang disediakan. Buku lain yang layak adalah:

RO Duda, PE Hart dan DG Stork, Klasifikasi Pola , 2nd Ed., John Wiley & Sons (2001)

Lorem Ipsum
sumber
1
Pada catatan itu, saya ingin menunjukkan ml-class.org yang merupakan pengantar yang sangat baik untuk pembelajaran mesin.
bjoernz
Metode yang menarik. Namun, ketika Anda mengatakan Py (jejak) dan Py (hutan) adalah "probabilitas menemukan jejak di seluruh gambar", apakah maksud Anda probabilitas menemukan mereka di blok 8x8, atau seluruh gambar? Jika keseluruhan gambar, saya membayangkan keduanya akan 100%, karena semua gambar pelatihan akan memiliki keduanya di suatu tempat.
Cerin
@ Cerin: Maaf, menurut Py (jejak), maksud saya probabilitas menemukannya di blok. Jadi itu akan menjadi total semua blok yang memiliki jejak dengan jumlah total blok di seluruh gambar. Saya telah mengeditnya untuk memperbaikinya
Lorem Ipsum
Bagaimana Anda mendefinisikan ruang fitur X? Apakah Anda menggunakan sesuatu seperti K-Means clustering untuk mengurangi dimensi dari vektor fitur 64 titik menjadi sekitar 10 fitur?
Cerin
@Cerin Ya, K-means adalah salah satu pendekatan umum untuk mengurangi dimensionalitas.
Lorem Ipsum
5

Sepertinya masalah untuk segmentasi tekstur (bukan segmentasi warna) Ada banyak metode,

mereka sering menggunakan wavelet Gabor, seperti ini http://note.sonots.com/SciSoftware/GaborTextureSegmentation.html

Segmentasi berbasis Superpixels http://ttic.uchicago.edu/~xren/research/superpixel/

dan segmentasi pemotongan grafik yang serupa http://en.wikipedia.org/wiki/Graph_cuts_in_computer_vision

di sini adalah ikhtisar wiki http://en.wikipedia.org/wiki/Segmentation_(image_processing)

mirror2image
sumber
segmentasi tekstur gabor tampaknya bagus!
nkint