6 Ekim 2017 Cuma

Renk Algoritmaları

Giriş
Renk algoritmaları genellikle elimizde bulunan iki renk ile ilgili bir işlemdir
İki Rengin Ortalamasını Bulmak
Ortalamayı bulan bir metod yazalım
byte Average(byte a, byte b)
{
  return (byte)((a + b) / 2);
}
Daha sonra her iki rengin de R,G,B değerlerinin ortalamasını alalım. Şöyle yaparız.
Color myColorMiddle = Color.FromRgb(Average(Color1.R, Color2.R),
 Average(Color1.G, Color2.G),
 Average(Color1.B, Color2.B));

Tablodaki Renge En Yakın Olan Rengi Bulmak
Elimizde sabit bir renk olsun. Mesela bir HTML rengi. Bu girdiye en yakın rengi bulmak için bildiğimi mesafe formülü uygulanabilir. Color Distance formülleri arasında en kolay olanı CIE76

RGB'den Monochrome Renge Çevirmek
Farklı algoritmalar ve sabitler kullanılıyor. Temel olarak sabitler değişebilse de formül şuna benziyor. Aşağıdaki formül CCIR601. Başka formüller de var. Farklarını bilmiyorum.
Y = 0.299 R + 0.587 G + 0.114 B
RGB'den Greyscale Renge Çevirmek
Şu yöntem 3 rengin ortalamasını alıyor ve basit ancak çok iyi değil.
int oldrgb = img.getRGB(x,y);
Color color = new Color(oldrgb);
int gray = (color.getRed() + color.getGreen() + color.getBlue()) / 3;

Hiç yorum yok:

Yorum Gönder