Tugas Anda adalah menulis sebuah program yang mengambil gambar input dan menjalankannya melalui deteksi tepi untuk menjadi gambar keluaran.
Deteksi tepi berfungsi sebagai berikut (jika tidak jelas, lihat deteksi tepi sobel ):
- Nilai piksel adalah kecerahan total piksel, jadi jika warnanya berwarna, Anda harus mengonversinya menjadi skala abu-abu terlebih dahulu (untuk menjaga hal-hal sederhana dan golf-bisa, Anda dapat mengambil nilai rata-rata untuk R, G dan B).
- Rumus untuk G x dan G y untuk piksel p (i, j) adalah:
- G x = -1 * p (i-1, j-1) - 2 * p (i-1, j) - 1 * p (i-1, j + 1) + 1 * p (i + 1, j -1) + 2 * p (i + 1, j) + 1 * p (i + 1, j + 1)
- G y = -1 * p (i-1, j-1) - 2 * p (i, j-1) - 1 * p (i + 1, j-1) + 1 * p (i-1, j +1) + 2 * p (i, j + 1) + 1 * p (i + 1, j + 1)
- Nilai untuk ukuran edge pada pixel tersebut adalah: √ (G x 2 + G y 2 )
Gambar output untuk setiap piksel ukuran tepi √ (G x 2 + G y 2 ) sebagai skala abu-abu.
Bonus:
- Lakukan gaussian blur untuk menghaluskan gambar sebelum deteksi tepi dilakukan, untuk menghilangkan tepi yang lebih kecil. Ini memberikan bonus -30% pada hasil akhirnya.
- Ambil sudut dari tepi di akun. Anda memberi piksel keluaran beberapa warna, dengan mengambil nilai skala abu-abu yang sama dan menambahkan warna dari roda warna menggunakan sudut yang diperoleh dari rumus arctan (G y / G x ). Ini memberikan bonus lain sebesar -30% pada hasil akhirnya.
Aturan:
- Anda dapat menghilangkan nilai edgepixels, dan mengaturnya menjadi hitam, atau Anda dapat menggunakan 0 untuk piksel di luar gambar.
- Gambar ouput Anda harus dalam format gambar yang dapat dibuka di sebagian besar komputer.
- Keluaran harus ditulis ke disk atau dapat dikirimkan ke file.
- Input diberikan sebagai argumen baris perintah, dalam bentuk jalur relatif ke gambar, atau disalurkan dari baris perintah.
- Ini kode golf, jadi kode terpendek dalam byte menang!






