Home TürkçeC# Resmin Negatifini Alma

Resmin Negatifini Alma

by Fatih Boy
0 comment

   Görüntü işleme konusuna girmişken elimizdeki bir görüntünün negatifini nasıl alacağımızı anlatmamak olmaz. Oldukça basit bir mantığı olan negatif görüntü elde etme işleminde yapılacak olan işlem her bir pikselin RGB kanal değeri olan her bir bit’i değilini almak; yani 0’ları 1, 1’leri 0 yapmak.

   RGB renk modelinde her bir kanal için 8bit ayrılmıştır. İkilik düzende işlem yapmaya alışkınsanız siz de çok iyi bilirsiniz ki; bir sayının değilini almanın en kolay yolu bu sayının sahip olduğu basamak kadar 1’e sahip bir ikinci sayıdan çıkartmaktır.

Örnek vermek gerekirse; pikselimizin kırmızı kanalının 56 değerine sahip olduğunu varsayalım. Onluk düzendeki 56 sayısı, ikilik düzende 00111000 olarak karşımıza çıkacaktır. Bu değeri 11111111’den (onluk düzende 255) çıkartacak olursak 11000111 (onluk düzende 199) değerine ulaşırız; ki bu değer ilk başta elimizde olan 00111000 değerinin her bir bitinin değilinin alınmış halidir.

Orjinal görüntümüz ve negatifi

Aşağıda, oldukça basit olan bu işleme ait kod parçacığını bulabilirsiniz;

var orjinalGoruntu = new Bitmap(pbOrjinal.Image);
 
var negatifGoruntu = new Bitmap(orjinalGoruntu.Width, orjinalGoruntu.Height);
 
for (var x = 0; x < orjinalGoruntu.Width; x++) {
    for (var y = 0; y < orjinalGoruntu.Height; y++) {
        var piksel = orjinalGoruntu.GetPixel(x,y);
        var renkliPiksel = Color.FromArgb((int)(255 - piksel.R), (int)(255 - piksel.G), (int)(255 - piksel.B));
 
        negatifGoruntu.SetPixel(x, y, renkliPiksel);
    }
}
 
pbNegatif.Image = negatifGoruntu;

Şu Yazıları da Sevebilirsiniz

Leave a Comment

* Bu formu kullanarak, verilerinizin bu web sitesi tarafından saklanması ve kullanılmasını kabul ediyorsunuz.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul Et Daha Fazla Bilgi