Saya tidak tahu Mathematica. . . sangat buruk. Tapi saya suka jawaban di atas, sebagian besar.
Masih ada kelemahan utama dalam mengandalkan strip sendirian untuk mendapatkan jawabannya (saya pribadi tidak punya masalah dengan satu penyesuaian manual). Ada sebuah contoh (terdaftar oleh Brett Champion, di sini ) yang disajikan yang menunjukkan bahwa mereka, kadang-kadang, memecah pola baju. Jadi itu menjadi pola yang lebih kompleks.
Saya akan mencoba pendekatan id bentuk dan warna, bersama dengan hubungan spasial. Sama seperti pengenalan wajah, Anda dapat mencari pola geometris pada rasio tertentu dari satu sama lain. Peringatannya adalah bahwa biasanya satu atau lebih bentuk itu tersumbat.
Dapatkan white balance pada gambar, dan red white balance dari gambar. Saya percaya Waldo selalu memiliki nilai yang sama / rona, tetapi gambar mungkin dari pemindaian, atau salinan yang buruk. Kemudian selalu merujuk pada array warna yang sebenarnya dimiliki Waldo: merah, putih, coklat tua, biru, persik, {warna sepatu}.
Ada pola baju, dan juga celana, kacamata, rambut, wajah, sepatu dan topi yang mendefinisikan Waldo. Juga, relatif terhadap orang lain dalam gambar, Waldo ada di sisi kurus.
Jadi, cari orang acak untuk mendapatkan ketinggian orang di foto ini. Ukur tinggi rata-rata banyak hal pada titik acak dalam gambar (garis besar sederhana akan menghasilkan beberapa orang secara individu). Jika setiap hal tidak berada dalam beberapa standar deviasi satu sama lain, mereka diabaikan untuk saat ini. Bandingkan rata-rata ketinggian dengan tinggi gambar. Jika rasionya terlalu besar (mis. 1: 2, 1: 4, atau hampir sama), lalu coba lagi. Jalankan 10 (?) Kali untuk memastikan bahwa sampel semuanya cukup berdekatan, tidak termasuk rata-rata di luar beberapa standar deviasi. Mungkinkah dalam Mathematica?
Ini adalah ukuran Waldo Anda. Walso kurus, jadi Anda mencari sesuatu 5: 1 atau 6: 1 (atau apa pun) ht: wd. Namun, ini tidak cukup. Jika Waldo sebagian tersembunyi, tingginya bisa berubah. Jadi, Anda mencari balok merah-putih yang ~ 2: 1. Tetapi harus ada lebih banyak indikator.
- Waldo punya kacamata. Cari dua lingkaran 0,5: 1 di atas merah-putih.
- Celana biru. Berapapun jumlah biru pada lebar yang sama dalam jarak apa pun antara ujung merah-putih dan jarak ke kakinya. Perhatikan bahwa ia memakai kemejanya pendek, sehingga kakinya tidak terlalu dekat.
- Topi. Merah-putih jaraknya hingga dua kali bagian atas kepalanya. Perhatikan bahwa rambutnya berwarna gelap di bawah, dan mungkin kacamata.
- Lengan panjang. merah-putih pada beberapa sudut dari merah-putih utama.
- Rambut hitam.
- Warna sepatu. Saya tidak tahu warnanya.
Semua itu bisa berlaku. Ini juga cek negatif terhadap orang-orang yang sama di foto - misalnya, # 2 meniadakan mengenakan celemek merah-putih (terlalu dekat dengan sepatu), # 5 menghilangkan rambut berwarna terang. Selain itu, bentuk hanya satu indikator untuk masing-masing tes ini. . . warna saja dalam jarak yang ditentukan dapat memberikan hasil yang baik.
Ini akan mempersempit area yang akan diproses.
Menyimpan hasil ini akan menghasilkan seperangkat area yang seharusnya memiliki Waldo di dalamnya. Kecualikan semua area lain (mis., Untuk setiap area, pilih satu lingkaran dua kali lebih besar dari ukuran rata-rata orang), dan kemudian jalankan proses yang diatur oleh @Heike dengan menghapus semua kecuali merah, dan seterusnya.
Adakah pemikiran tentang cara membuat kode ini?
Edit:
Pikiran tentang cara kode ini. . . kecualikan semua area kecuali Waldo red, skeletonize area merah, dan pangkas hingga satu titik. Lakukan hal yang sama untuk Waldo hair brown, celana Waldo blue, warna sepatu Waldo. Untuk warna kulit Waldo, singkirkan, lalu temukan garis besarnya.
Selanjutnya, kecualikan non-merah, melebarkan (banyak) semua area merah, kemudian skeletonize dan pangkas. Bagian ini akan memberikan daftar kemungkinan poin pusat Waldo. Ini akan menjadi penanda untuk membandingkan semua bagian warna Waldo lainnya.
Dari sini, menggunakan area merah kerangka (bukan yang melebar), hitung garis di setiap area. Jika ada nomor yang benar (empat, kan?), Ini tentunya merupakan area yang memungkinkan. Jika tidak, saya kira hanya mengecualikannya (sebagai pusat Waldo ... mungkin masih topinya).
Kemudian periksa apakah ada bentuk wajah di atas, titik rambut di atas, titik celana di bawah, titik sepatu di bawah, dan sebagainya.
Belum ada kode - masih membaca dokumen.