Bir Bilgisayar Mühendisi İçin Programlama Dili, Öğrendiklerini Sınadığı, Deneyler Yaptığı Bir Labaratuardır. Ve Mühendisler Deneylerini, Kestiremedikleri Sonuçları Gözlemlemek İçin Değil, Öngördükleri Sonuçları Doğrulamak İçin Yaparlar...
  Gri Seviye Ve Binary Dönüşüm
   Resmi gri seviyeye indirmek, resmi daha sonra işleyecek algoritmaların işini kolaylaştırmak için uygulanabilen bir yöntem. Resmi gri seviyeye indirmenin birden fazla yöntemi var. En çok kullanılan yöntem kırmızı, yeşil ve mavi değerlerin toplanıp üçe bölünmesi ile elde edilen ortalama değerin tekrar, kırmızı, yeşil ve maviye atanıp resme yazılması yöntemi. Bunun dışında sadece kırmızı, sadece yeşil veya sadece mavi değerleri baz alınarak gri seviye dönüşümü yapılabilir. Hangi yöntemin seçileceği, resim üzerinde daha sonra yapılacak işlemin ne olduğuna bağlı olarak değişir...

Visual basic örnek kod :
' Forma bir picturebox nesnesi ekleyin ve içine bir resim koyun. Birde command butonu ekleyin...
Private Function kirmizi_ver(renk As Long) As Integer
kirmizi_ver = Int(renk Mod 256)
End Function

Private Function yesil_ver(renk As Long) As Integer
yesil_ver = Int((renk Mod 256 ^ 2) / 256)
End Function

Private Function mavi_ver(renk As Long) As Integer
mavi_ver = Int(renk / (256 ^ 2))
End Function

Private Sub siyahbeyaz_Click()
Dim renk As Long, kirmizi As Integer, yesil As Integer, mavi As Integer, ortalama As Integer
For x = 1 To Picture1.Width - 6
    For y = 1 To Picture1.Height - 6
        renk = Picture1.Point(x, y)
        kirmizi = kirmizi_ver(renk)
        yesil = yesil_ver(renk)
        mavi = mavi_ver(renk)
        ortalama = Int((kirmizi + yesil + mavi) / 3)
        Picture1.PSet (x, y), RGB(ortalama, ortalama, ortalama)
    Next y
    DoEvents
Next x
End Sub

   Binary(ikili) dönüşüm ise resimdeki tüm bilgileri 1 veya 0 a dönüştürmektir. Sonuçta sadece beyaz ve siyahtan oluşan iki renkli bir resim elde edilmiş olur. Bu işlem, resimdeki bilgilerin bilgisayar üzerindeki işlenebilirliğini arttırır.

   İkili dönüşüm gerçekleştirilirken kendimize bir eşik değeri seçmemiz gerekiyor. Seçeceğimiz eşik değeri resimdeki ayrıntıların görünürlüğü açısından çok önemli. Bu dönüşüm gri seviyeden yapılırsa oldukça kolaydır. Renkli resimden de direkt dönüşüm yapılabilir.

   Öncelikle gri seviyeli resimden ikili seviyeye dönüşüm nasıl dönüşüm yapılır? Bütün pixeller teker teker taranır ve elde edilen her bir renk değeri, 0-255 aralığında seçilmiş olan eşik değeri ile karşılaştırılır. Eğer büyükse yeni resim üzerinde bu pixel beyaza, küçükse siyaha boyanır(tersi de yapılabilir). Tabii binary resim üzerinde işlem yapacaksak, bu değerleri bir diziye veya matrise de atabiliriz.

   Renkli seviyeden ikili seviyeye dönüşüm herhangi bir renk üzerinden yapılabileceği gibi gri seviyeye dönüşüm işleminden sonra da yapılabilir. Yani bir pixelin ana renk değerleri toplanıp üçe bölündükten sonra eşik değeri ile karşılaştırılabilir...

Renkli seviyeden ikili seviyeye dönüştürülmüş araba resmi örneği. Şimdi bilgisayarın plakayı ayırt etmesi ne kadar da kolaylaşmış :

Renkli seviyeden ikili seviyeye dönüştürülmüş araba resmi örneği
'Resmin binary seviyeye dönüşümü (vbasic)
Private Function kirmizi_ver(renk As Long) As Integer
kirmizi_ver = Int(renk Mod 256)
End Function

Private Function yesil_ver(renk As Long) As Integer
yesil_ver = Int((renk Mod 256 ^ 2) / 256)
End Function

Private Function mavi_ver(renk As Long) As Integer
mavi_ver = Int(renk / (256 ^ 2))
End Function

Private Sub Command1_Click()
Dim esikdegeri As Integer
esikdegeri = 220
For x = 1 To Picture1.Width - 6
    For y = 1 To Picture1.Height - 6
        renk = Picture1.Point(x, y)
        kirmizi = kirmizi_ver(renk)
        yesil = yesil_ver(renk)
        mavi = mavi_ver(renk)
        ortalama = Int((kirmizi + yesil + mavi) / 3)
        If ortalama> esikdegeri Then Picture2.PSet (x, y), vbWhite
        'Arkaplanı siyah seçtiğimiz için else demeye gerek yok...
    Next y
    DoEvents
Next x
End Sub

 
Okunma Sayısı: 730
Yayınlanma Tarihi: Blogun eski sürümü ile yazılmış, tarih kaydı bulunmuyor...
Anahtar Kelimeler: gri, resim, renkli, dönüşüm, binary, ikili

Onaylı yorum bulunmuyor.
Yorum/Görüş Bildir
Yorumları html kodu veya özel karakter kullanmadan, yazım kurallarına
dikkat ederek ve düzgün bir Türkçe kullanarak yazalım...
 
    Atasoy Blog v3.0 © 2009-2010 Hüseyin Atasoy | Tema Tasarımı: Hüseyin Atasoy
AtasoyWeb 1 yaşında, bu tema benden ona doğum günü hediyesi :)    
Programlama Günlüğü > Dijital Sinyal İşleme > Görüntü İşleme > Gri Seviye Ve Binary Dönüşüm
Menü