Ini adalah masalah yang sangat sulit. Saya adalah bagian dari tim yang mengerjakannya selama beberapa tahun, dan setelah mengembangkan dan mendukung aplikasi lain untuk waktu yang lama saya dapat mengatakan bahwa deteksi penyok adalah masalah yang sangat rumit, dan jauh lebih sulit daripada yang terlihat pada awalnya.
Memiliki algoritma yang bekerja dalam kondisi lab atau gambar yang dikenal adalah satu hal; mengembangkan sistem yang akurat dan kuat untuk gambar "alami" seperti mobil yang terlihat di tempat parkir kemungkinan akan membutuhkan tim yang bekerja selama beberapa tahun. Selain masalah inti pembuatan algoritma, ada banyak kesulitan teknik lainnya.
Kode sampel yang Anda uji bukanlah awal yang buruk. Jika Anda dapat menemukan tepi di sekitar sisi kanan gelap penyok Anda dapat membandingkan peta tepi mobil dengan ding ke peta tepi mobil yang dikenal baik dicitrakan dari sudut yang sama dengan pencahayaan yang sama. Mengontrol pencahayaan akan sangat membantu.
Masalah yang perlu dipertimbangkan termasuk yang berikut:
- Pencahayaan (jauh lebih sulit daripada yang pertama terlihat)
- Permukaan 3D yang diharapkan dari panel luar rakitan (mis. Dari data CAD)
- Kriteria yang mencirikan lekuk: area, kedalaman, profil, dll.
- Kriteria untuk false negative dan false positive
- Berarti untuk menyimpan data lekuk dan / atau lekukan peta ke model mobil (atau tata letak kupu-kupu)
- Metodologi dan alat untuk mengukur karakteristik penyok yang "benar": kedalaman, luas, dll.
- Database luas penyok dari pengambilan sampel acak kendaraan
- Berurusan dengan berbagai warna cat dan sentuhan akhir
1. Pencahayaan
Seperti yang disebutkan Martin B dengan benar di atas, pencahayaan yang benar sangat penting untuk masalah ini. Bahkan dengan pencahayaan terstruktur yang baik, Anda akan mengalami kesulitan besar mendeteksi penyok kecil di dekat garis fitur, celah di antara panel, pegangan, dan sebagainya.
Entri Wikipedia untuk pencahayaan terstruktur agak tipis, tetapi ini adalah awal untuk memahami prinsip:
http://en.wikipedia.org/wiki/Structured_light
Garis-garis cahaya dapat digunakan untuk mendeteksi in-dings (penyok) dan out-dings (jerawat). Untuk melihat ding, Anda memerlukan gerakan relatif antara sumber cahaya dan mobil. Baik kamera + cahaya bergerak bersama relatif terhadap mobil, atau mobil bergerak melewati kamera + cahaya.
Meskipun in-dings dan out-dings memiliki penampilan yang khas ketika terlihat di tepi strip cahaya, kemampuan mendeteksi lekuk yang diberikan tergantung pada ukuran dan kedalaman lekuk relatif terhadap lebar strip cahaya. Kelengkungan mobil itu rumit, jadi cukup sulit untuk menghadirkan garis cahaya yang konsisten ke kamera. Ketika strip cahaya bergerak melintasi bodi mobil, kelengkungan dan bahkan intensitas strip cahaya akan bervariasi.
Salah satu solusi parsial adalah memastikan bahwa kamera dan garis cahaya selalu pada sudut yang konsisten relatif terhadap normal (3D tegak lurus) dari bagian permukaan yang diperiksa. Dalam praktiknya robot akan diminta untuk menggerakkan kamera secara akurat relatif terhadap permukaan tubuh. Memindahkan robot secara akurat membutuhkan pengetahuan tentang pose (posisi dan sudut 3D) dari bodi mobil, yang merupakan masalah buruk dengan sendirinya.
Untuk setiap inspeksi untuk aplikasi otomotif, Anda perlu mengontrol pencahayaan sepenuhnya. Itu berarti tidak hanya menempatkan lampu pilihan Anda di lokasi yang diketahui, tetapi juga memblokir semua cahaya lainnya. Ini berarti kandang yang cukup besar. Karena panel mobil melengkung ke luar (hampir seperti permukaan bola), mereka akan memantulkan cahaya dari sumber di sekitar mereka. Untuk menyederhanakan masalah ini, Anda dapat menggunakan bilah pijar frekuensi tinggi di dalam selungkup yang dilapisi beludru hitam. Cukup sering itu perlu untuk pergi ke ekstrem seperti itu untuk aplikasi inspeksi.
2. Permukaan 3D Permukaan
luar mobil terdiri dari kurva yang kompleks. Untuk mengetahui apakah tempat yang mencurigakan adalah ding, Anda harus membandingkan tempat itu dengan fitur mobil yang diketahui. Itu berarti Anda harus mencocokkan gambar 2D dari kamera ke model 3D yang dilihat pada sudut tertentu. Ini bukan masalah yang diselesaikan dengan cepat, dan cukup sulit untuk melakukannya dengan baik sehingga beberapa perusahaan berspesialisasi di dalamnya.
3. Karakterisasi cacat
Untuk penelitian akademis atau pengujian laboratorium mungkin cukup untuk mengembangkan algoritma yang menunjukkan janji atau meningkatkan metode yang ada. Untuk menyelesaikan masalah ini dengan benar untuk penggunaan komersial atau industri nyata, Anda harus memiliki spesifikasi yang sangat rinci untuk ukuran penyok yang ingin Anda deteksi.
Ketika kami mengatasi masalah ini, tidak ada standar masuk akal industri atau nasional untuk penyok (deformasi 3D). Artinya, tidak ada teknik yang disepakati untuk mengkarakterisasi penyok berdasarkan luas, kedalaman, dan bentuknya. Kami hanya memiliki sampel yang disetujui para pakar industri buruk, tidak terlalu buruk, dan marjinal dalam hal keparahan. Menentukan "kedalaman" suatu ding juga sulit, karena ding adalah lekukan 3D pada (biasanya) permukaan 3D yang melengkung ke arah luar.
Bantingan yang lebih besar lebih mudah dideteksi, tetapi mereka juga kurang umum. Pekerja mobil yang berpengalaman dapat memindai bodi mobil dengan cepat - jauh lebih cepat daripada pengamat yang tidak terlatih - dan menemukan ukuran jari kelingking Anda yang dangkal dengan cepat. Untuk membenarkan biaya sistem otomatis, Anda mungkin harus mencocokkan kemampuan pengamat yang berpengalaman.
4. Kriteria untuk deteksi kesalahan
Sejak dini Anda harus menetapkan kriteria untuk false negative yang dapat diterima dan false positive. Bahkan jika Anda hanya mempelajari masalah ini sebagai proyek R & D dan tidak bermaksud mengembangkan produk, cobalah untuk menentukan kriteria deteksi Anda.
false negative: penyok hadir, tetapi tidak terdeteksi positif palsu: daerah yang tidak bercacat diidentifikasi sebagai penyok
Biasanya ada tradeoff: tingkatkan kepekaan dan Anda akan menemukan lebih banyak bantingan (kurangi negatif palsu), tetapi Anda juga akan menemukan bantingan lain yang tidak ada di sana (tingkatkan false positive). Sangat mudah untuk meyakinkan diri sendiri bahwa suatu algoritma berkinerja lebih baik daripada yang sebenarnya: bias alami kita adalah untuk melihat cacat yang terdeteksi oleh algoritma dan menjelaskan bahwa itu tidak terdeteksi. Lakukan tes buta dan otomatis. Jika mungkin, mintalah orang lain mengukur bantingan dan menetapkan tingkat keparahan sehingga Anda tidak tahu apa ukuran sebenarnya.
5. Menyimpan data dan / atau memetakannya
Penyok ditandai dengan tingkat keparahannya dan lokasinya pada bodi mobil. Untuk mengetahui lokasinya, Anda harus menyelesaikan masalah korespondensi 2D-ke-3D yang disebutkan di atas.
6. Menentukan bentuk lekukan "benar"
Penyok sulit diukur. Lekuk tajam dan lekuk bulat dengan luas dan kedalaman permukaan yang sama akan tampak berbeda. Mengukur penyok dengan cara mekanis mengarah pada penilaian subyektif, dan itu juga cukup membosankan untuk menggunakan pengukur kedalaman, penggaris, dll., Ketika Anda mungkin harus mengukur lusinan jika tidak lebih.
Ini adalah salah satu masalah rekayasa yang lebih sulit untuk dipecahkan untuk proyek deteksi cacat apa pun untuk pembuatan: bagaimana cara mengukur cacat dan mengkarakterisasi itu? jika ada standar untuk melakukannya, apakah standar berkorelasi baik dengan sesuatu yang diukur sistem inspeksi? jika sistem inspeksi tidak menemukan yang "seharusnya" ditemukan, siapa yang harus disalahkan?
Yang mengatakan, jika sistem inspeksi bekerja cukup baik untuk sampel cacat yang diketahui, maka pengguna akhirnya dapat mempercayainya, dan sistem itu sendiri menjadi standar untuk menentukan tingkat keparahan cacat.
7. Basis data ekstensif penyok
Idealnya Anda akan memiliki ratusan atau bahkan ribuan sampel gambar penyok dengan tingkat keparahan berbeda di lokasi berbeda pada kendaraan dari pabrik yang sulit. Jika Anda tertarik untuk menemukan lekukan yang disebabkan oleh kecelakaan selama proses perakitan, maka mungkin butuh waktu lama untuk mengumpulkan data semacam itu. Penyok yang disebabkan selama proses perakitan tidak umum.
Jika Anda hanya tertarik menemukan penyok yang disebabkan oleh kecelakaan atau kerusakan lingkungan, maka itu masalah lain. Jenis penyok akan berbeda dari yang disebabkan oleh gundukan yang tidak disengaja di dalam pabrik perakitan otomatis.
8. Berurusan dengan warna-warna cat yang berbeda
Memang benar bahwa detektor tepi dapat cukup kuat dalam mendeteksi tepi dalam gambar dengan tingkat kontras yang berbeda-beda, tetapi bisa sangat mengecewakan untuk melihat apa yang sebenarnya dimaksud dengan "berbagai tingkat kontras" untuk berbagai cat dan penyelesaian cat otomotif yang berbeda. . Garis cahaya yang tampak bagus pada mobil hitam yang mengkilap sulit dideteksi pada mobil putih dengan cat lama.
Sebagian besar kamera memiliki rentang dinamis yang relatif terbatas, sehingga mencapai kontras yang baik untuk permukaan hitam mengkilap dan permukaan putih kusam itu sulit. Sangat mungkin Anda harus mengontrol intensitas pencahayaan secara otomatis. Itu sulit juga.