Resmin Negatifini Alma

Print Friendly

   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;

Related posts:

  1. Resmi Pikselleştirme
  2. Renkli bir Resmi Gri Tonlamaya Dönüştürme
  3. Otomatik Olarak ASP.Net Uygulaması Hata Dökümünü Alma
Twitter Digg Delicious Stumbleupon Technorati Facebook Email

About Fatih Boy

İzmir'li bir bilgisayar mühendisi olan Fatih, özel bir firmada Proje Müdürü olarak çalışmaktadır. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# konusundan Microsoft tarafından iki 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+

No comments yet... Be the first to leave a reply!

Leave a Reply

 
QR Code Business Card