pengantar
Tepi tajam, terus terang, benar-benar berbahaya sehingga, diberikan PNG sebagai input, mengaburkan gambar menggunakan metode yang dijelaskan di bawah ini dan menumpulkan tepi tajam yang terkutuk itu.
metode
Untuk mendapatkan nilai RGB dari setiap piksel, gunakan tiga persamaan berikut:
Di mana adalah jumlah dari nilai merah dari masing-masing piksel yang berdekatan yang dikuadratkan. Nilai adalah jumlah piksel yang berdekatan (misalnya, piksel sudut akan memiliki nilai 3, sementara piksel di sekitar tengah gambar akan memiliki nilai 8).
Piksel yang berdekatan adalah piksel yang berjarak 1 piksel dari piksel asli di semua arah (kiri, kanan, atas, bawah, dan pada semua diagonal).
Misalnya, dalam gambar 3 x 1 berikut:
Nilai RGB kabur dari piksel tengah adalah:
di mana output desimal dibulatkan ke unit terdekat. Anda seharusnya tidak sekadar meratakan hasilnya.
Oleh karena itu, piksel tengah akan menjadi warna (0, 221, 221), atau:
Menghasilkan gambar:
Anda harus mengulangi proses ini untuk setiap piksel dalam gambar. (Perhatikan bahwa Anda melakukan ini dengan piksel asli dan bukan piksel yang dimodifikasi. Pada dasarnya, Anda tidak boleh menimpa gambar asli, dan harus membuatnya benar-benar terpisah dari gambar baru yang buram ).
Jika Anda menghitung nilai apa pun yang lebih besar dari 255, asumsikan nilainya 255 (Yaitu, nilai 374 akan ditetapkan ke 255).
Output yang dihasilkan harus berupa gambar PNG yang terpisah (Anda dapat memberi nama ini apa pun yang Anda inginkan).
Contohnya
Super Mario
Asli:
Kabur:
Papan main dam
Asli:
Kabur:
Keripik
Asli
Kabur
Tidak garing lagi
American Gothic
Asli:
Kabur:
Untuk melihat blur pada gambar yang lebih besar, sebaiknya jalankan kembali program pada gambar buram:
Tantangan
Kode terpendek untuk mengaburkan gambar PNG yang diberikan menang.
Anda dapat menggunakan pustaka pemrosesan gambar (seperti PIL) tetapi Anda tidak boleh menggunakan fungsi pengaburan bawaan (Mathematica, saya sedang melihat Anda).
Catatan
Seperti @orlp katakan di bawah ini:
Sebagai catatan, (setahu saya) ini bukan metode pengaburan standar. Tantangan ini bukan sumber daya pendidikan.
sumber
n
akan muncul di penyebut.Jawaban:
Python,
354313 byteBukan yang terbaik, tapi hei ...
Menggunakan Space untuk indentasi level 1, Tab untuk level 2, lalu Tab + Space dan Tab + Tab
math.sqrt()
dengan()**.5
berkat peluruhan betamin
untuk menjepit (menghemat banyak!) Dan0
untukpass
terima kasih kepada Loovjo+=[]
untuk.append()
menyimpan 5 bytes
untuk stensilsumber
n**0.5
lebih pendek dariimport math;math.sqrt(n)
? Apakah ada alasan untuk yang terakhir?v if v<256 else 255
dapat disingkat menjadimin(v,255)
pass
dengan0
from PIL import Image as I
.MATLAB, 130 byte
Mengambil gambar sebagai input dan menyimpan output sebagai
b.png
.sumber