Okuldan bir adet proje yapmamız istendi. Kısaca özetleyeyim: Bir adet resim alınacak ve pictureBox'a yüklenecek. Daha sonra bu resim, pixel pixel taranarak renk kodları çıkarılacak. Buraya kadar sıkıntı yok. Fakat buradan sonra resimde en fazla miktarda mevcut olan rengi tespit etmemiz istendi. Örneğin resmimizde en çok sarı renk hakim diyelim. Resmin içinde yer alan sarı rengin tüm tonları bir listeye atılacak. İşte burada iki adet algoritma kullanmamız istendi: SCALAR QUANTİZATİON ve MEDİAN CUT.
Bu iki algoritma hakkında pek Türkçe döküman bulamadım. Bu noktada bana yardım edebilir misiniz? Şimdiden teşekkürlerimi sunuyorum.
Not: Programlama dili olarak c# kullanılacak.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
Resmi öncelikle piksel piksel taratıp renk kodlarını elde ettik. Daha sonra bu resmi dört eş parçaya böldük ve bu eş parçalardaki renk kodlarını tek tek kontrol ettik. Sonra parçalardaki farklı renk sayılarını tespit ettik.
Biraz absürd olacak ama örneğin resim 4 adet pikselden oluşuyor diyelim. 1.piksel kırmızı, 2.piksel mavi, 3. sarı ve 4.sü de yine kırmızı. (burada renk isimlerini verdim ama normalde #ff55dd gibi renk kodları ile işlem yapıyoruz)
Burada ilk pikseli diğerleri ile kontrol ediyoruz. Başta ilk değeri 0 olan bir int değişken tanımladığımızı farzedelim. Eğer 1.piksel, kontrol edilen pikselden farklı ise, değişkeni 1 artırıyoruz, aynı renk ise değiştirmiyoruz. Böylelikle parçadaki farklı renk sayısını buluyoruz. Mesela verdiğim bu örnekte 3 farklı renk çıkıyor. (k,m,s)
4 eş parçanın tümünü bu işleme tabi tutuyoruz. En çok sayıda farklı renk hangi parçada ise, artık o parçayı ele alıyoruz. Diğer 3 parça ile işimiz bitiyor. Sonra elde ettiğimiz bu parçayı da 4 eş parçaya bölüyor ve aynı işlemleri bu parçalara da uyguluyoruz. Rekürsif bir yapı var anlayacağın.
"Peki bu işlem nereye kadar sürecek?" diye soruyorsundur muhakkak. Başta kullanıcıdan aldığımız bir seviye var. Yani ilk önce kullanıcıya kolay-orta-zor şeklinde 3 adet zorluk seviyesi sunuyoruz. Her seviye, belirli miktarda renk getiriyor ekrana. Mesela orta seviyeyi seçtiğimde 11 adet renk kutucuğu geliyor ekrana. (Ödevde bizden istenen bu şekilde idi). İstenen kutucuk sayısını, zorluk seviyesi belirlendiği anda int bir değişkene atıyoruz.
Resimdeki farklı sayı miktarı, bizden istenen kutucuk sayısına(biraz önce dediğim 11 gibi bir değer) ulaşınca döngüyü kırıyoruz ve işlem bitiyor. Zaten döngünün sonunda birbirine oldukça yakın renk tonları ortaya çıkıyor. Sonra bu renkleri kutucuklara dizmek kalıyor.
Biraz karışık anlattığımın farkındayım ama umarım faydalı olmuştur. Bu anlattığım Median Cut oluyor.
Scalar Quantization'ı burada anlatabileceğimi sanmıyorum Sadece şöyle özetleyebilirim: Hexadecimal haldeki renk kodlarını 10'luk tabana yani 0-255 arası bir değere çeviriyoruz ve belli renk aralıklarını belli renklerde topluyoruz. Mesela 0 ile 64 aralığındaki renkleri 20'de topluyoruz atıyorum. Böylelikle resimdeki renk sayısını azaltıp ona göre işlemlerimizi yapıyoruz.
Okuldan bir adet proje yapmamız istendi. Kısaca özetleyeyim: Bir adet resim alınacak ve pictureBox'a yüklenecek. Daha sonra bu resim, pixel pixel taranarak renk kodları çıkarılacak. Buraya kadar sıkıntı yok. Fakat buradan sonra resimde en fazla miktarda mevcut olan rengi tespit etmemiz istendi. Örneğin resmimizde en çok sarı renk hakim diyelim. Resmin içinde yer alan sarı rengin tüm tonları bir listeye atılacak. İşte burada iki adet algoritma kullanmamız istendi: SCALAR QUANTİZATİON ve MEDİAN CUT.
Bu iki algoritma hakkında pek Türkçe döküman bulamadım. Bu noktada bana yardım edebilir misiniz? Şimdiden teşekkürlerimi sunuyorum.
Not: Programlama dili olarak c# kullanılacak.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.