Resmin Negatifini Alma

   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;

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir