Instagram Nedir? Nasıl Çalışır?

İnstagram, sosyal ortam paylaşımlarının bu derece yüksek olduğu günümüzde, akıllı telefonlarımızdan fotoğraf çekmeyi, efektler uygulamayı ve paylaşmayı kolaylaştıran ücretsiz bir mobil uygulamadır. Ekim 2010 ile IOS platformunda sanal ortam hayatına başlayan instagram, özellikle Nisan 2012 de android cihazlara yaptığı açılım sonrası, henüz ilk gün bitmeden 1 milyon indirme alarak dikkatleri iyice üzerine çekmeyi başardı. Nisan 2012 de kayıtlı 100 milyon kullanıcısı bulunan ve hızla gelişmekte olan uygulama facebook' un da aralarında bulunduğu sanal ortam devlerinin gözünden kaçmadı ve çok geçmeden facebook tarafından 1 milyar $ nakit karşılığında 13 geliştiricisi ile beraber satın alınarak olası bir rekabetin önüne geçildi.

Uygulamanın yaklaşık 20 ay gibi kısa bir sürede bu denli popülariteye ve paraya kavuşması, sosyal ortamlardaki açığı görmesine ve pek çok profesyonel fotoğraf makinesinin bile yarışamayacağı güzellikte fotoğraflar yaratan yaklaşık 20 farklı görüntü filtresine dayanmaktadır. Dönem itibari ile insanlar mega mega piksellerden çok, 2 MP kamera ile de güzel fotoğraflar çekmek istiyordu. Zaten cep telefonu kullanıcılarının büyük bir kısmı için anlamı bile olamayan bu kavramın, instagram ile birlikte neredeyse tamamen anlamsızlaşması, uygulamanın kullanıcılar tarafından sevilmesine bu kadar sebep oldu.

Nasıl Çalışır?

Toplam 20 filtre için değer 1 milyar $ olsa da, filtrelerin pek çoğu basit bir kaç görüntü işleme operasyonu ile gerçeklenebilecek niteliktedirler. Bir önceki yazımda anlattığım dönüşüm matrisi, parametreler uygun seçilerse, resimlere efekt uygulamanın bir yöntemi olarak kullanılabilir. Dönüşüm matrisinin doğrudan İnstagram filtresi olarak kullanılamamasının sebebi ise, dönüşüm matrisinin tanımlanan işlemleri renk kanallarına uygulamasıdır. İnstagram filtrelerinde olan ise, dönüşümlerin pikselden piksele (noktasal) olmasıdır. Pikselden piksele dönüşüm 2 farklı şekilde gerçeklenebilir:
  • Belirli bir ton -----> Belirli bir tona (Bu yazıda anlatılacak)
  • Belirli bir noktadaki ton ------> Aynı noktadaki farklı bir tona (Bir sonraki yazıda anlatılacak)
İlk yöntem, basit bir renk haritalama işlemidir. Herhangi bir resmin 0-255 arası değerlerden oluştuğunu biliyoruz, bu yöntemdeki amacımız, yeni resimde: eski resimde gördüğün tüm 0 ları 10 yap, tüm 1 leri 20 yap, tüm 255 ler 200 olsun şeklinde yeni bir haritalama yapmak. Bir örnek ile daha anlaşılır yapmaya çalışalım. Elimizde 1 satır 15 sütundan oluşan 3 bitlik (0-7) aşağıdaki görüntü olsun:

Girdi Resmi = [ 2 3 5 0 4 1 2 4 7 1 2 2 5 2 4]
Renk Haritası = [ 0 1 1 3 5 6 6 7 ]

Yukarıda verilen renk haritası ile anlatılmak istenen haritalama işlemi yandaki tablo ile verilmiştir. Verilen renk haritası kullanılarak oluşturulan yeni görüntü aşağıda verilmiştir.

Çıktı Resmi = [ 1 3 6 0 5 1 1 5 7 1 1 1 6 1 4 ]

Oluşturulan yeni resimde ara değerler (2,3,4,5 gibi) daha az olurken, sınır değerler (0,1,6,7 gibi) daha fazla görünmektedir. Sınır değerlerin çoğalarak ara değerlerin azaltılması işlemi zıtlık artırma olarak bilinir.

Renk haritalama işleminin yapılabilmesi için cbmp kütüphanesi altına yazılan resim_har fonksiyonu aşağıda verilmiştir. 


BMP   resim_har(BMP kaynak,double tr[3][256]) {
      
      BMP im=yenim_bmp(kaynak.bminfo.width,kaynak.bminfo.height);
      int i=0;
                       
      for(int j=0;j < kaynak.bminfo.height;j++) { 
            for(int i=0;i < kaynak.bminfo.width;i++) {
                            
               im.pixels[i][j].red   =  gbyte_yap(tr[0][kaynak.pixels[i][j].red]);
               im.pixels[i][j].green =  gbyte_yap(tr[1][kaynak.pixels[i][j].green]);
               im.pixels[i][j].blue  =  gbyte_yap(tr[2][kaynak.pixels[i][j].blue]);
             }
      }

      return im;
}

Kaynak kodlar üzerinde basit olarak 3 kanal için renk haritası kullanılarak giriş görüntüsünden çıkış görüntüsü elde edilmektedir. Bir önceki yazımda da bahsettiğim üzere renk kanallarını belirli değerlerle çarpmak, toplamak yerine, bunun bir renk haritası üzerinde yapılarak, doğrudan harita yardımı ile yeni rengin elde edilmesi program performansını ciddi ölçüde artıracaktır. Kodumuzu test etmek içinse şu satırları kullanacağız.


BMP I   = resim_oku("doll.bmp");

int M = I.bminfo.height;
int N = I.bminfo.width;
double map[3][256];

for(i=0;i < 256;i++) {
                       
        map[0][i] = pow(i,1.05);
        map[1][i] = pow(i,1.1);
        map[2][i] = i*0.8;
}
                       
BMP H = resim_har(I,map);

resim_yaz(H,"harita_resim.bmp");

Yukarıdaki kodlarda renk haritası kuvvet fonksiyonu kullanarak oluşturuldu. Yani kırmızı kanaldaki x değeri yeni resimde x^1.05, .. şeklinde oluşturuldu. Farklı haritalar kullanılarak elde edilmiş görüntüler aşağıda verilmiştir.

instagram fotoğraf, instagram nedir
İnstagram Nasıl Çalışır
Son olarak da instagram resimlerinde sıkça görülen kahve fotoğrafı ile bitirelim. İşlemleri yaptıktan sonra tanıtımlarda neden kahve kullandıklarını da anlamış oldum, farklı renk haritaları ile elde edilen harika görüntüler aşağıda verilmiştir. Siz de kendinize özgü bir renk haritası tasarlayarak çok basit bir instagram filtresi tasarlayabilirsiniz.

instagram fotoğraf, instagram nedir
İnstagram Nasıl Çalışır

Hiç yorum yok:

Yorum Gönder

Görüntü işleme ile ilgili yeni yazıları ve bu sitede yer alan yazıların güncellenmiş sürümlerini www.imlab.io veya cescript.github.io adreslerinden takip edebilirsiniz.

X