Göreviniz bir girdi görüntüsü alan bir program yazmak ve bir çıktı görüntüsü olmak için kenar algılaması ile çalıştırmaktır.
Kenar algılama aşağıdaki gibi çalışır (net değilse, sobel kenar algılamasına bakın ):
- Bir pikselin değeri bir pikselin toplam parlaklığıdır, bu nedenle renkli ise, önce gri tonlamaya dönüştürmeniz gerekir (işleri basit ve golf yapabilmek için R, G ve B).
- G formül x ve G, Y piksel p (i, j) şunlardır:
- 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)
- Bu pikseldeki kenarın boyutu için değer şu şekildedir: √ (G x 2 + G y 2 )
Çıktı görüntüsü her piksel için √ (G x 2 + G y 2 ) kenarının gri skalası boyutundadır .
Bonuslar:
- Daha küçük kenarları atlamak için kenar algılama devreye girmeden önce görüntüyü yumuşatmak için bir gauss bulanıklığı gerçekleştirin. Bu, sonuçta% -30 bonus verir.
- Hesabın kenar açısını dikkate alın. Aynı gri tonlama değerini alarak ve arktan formülünden (G y / G x ) elde edilen açıyı kullanarak bir renk tekerleğinden renk ekleyerek çıktı pikseline biraz renk verirsiniz . Bu, sonuçta% -30'luk başka bir bonus verir.
Kurallar:
- Kenar piksellerinin değerini atlayabilir ve siyah olarak ayarlayabilir veya görüntünün dışındaki herhangi bir piksel için 0 kullanabilirsiniz.
- Çıkış görüntünüzün çoğu bilgisayarda açılabilecek bir görüntü biçiminde olması gerekir.
- Çıktı diske yazılmalı veya bir dosyaya aktarılabilir olmalıdır.
- Giriş, bir komut satırı bağımsız değişkeni olarak, görüntüye göreli bir yol şeklinde verilir veya komut satırından aktarılır.
- Bu kod golf, bayt çok kısa kod kazanır!