Sosyal Medyada Popüler Olan Dijital Fotoğraf Filtreleri Nasıl Çalışır?
Cep Telefonlarınızla Çektiğiniz Fotoğrafları Tek Tuşla Siyah-Beyaz veya Sepya Yapan Algoritmaların Sırrı Ne?
Günümüzde üretilen ve kullanılan kameraların büyük bir çoğunluğu dijital kameralardan oluşmaktadır. Dijital kameralar, eski analog kameraların aksine fotoğrafları, fotoğraf şeridi yerine dijital hafızada depolamaktadır. Dijital kameraların yaygınlaşmasının en önemli sebeplerinden bir tanesi de çok küçük boyutlarda üretilebilir olmasıdır. Bu nedenle dijital kameralar, telefonlar ve bilgisayarlar dâhil olmak üzere birçok yerde kullanılmaya başlanmıştır.
Dijital fotoğrafları değiştirmeye yarayan filtreler ise, özellikle sosyal medyanın yaygınlaşması ile birlikte popülerlik kazanmıştır. Bu yazımızda, özellikle dijital kameralarda kullanılan ve sosyal medyanın dört bir yanını süsleyen dijital filtrelerin nasıl çalıştığına odaklanacağız.
Fotoğrafların İşlenmesi ve Dosya Formatları
Dijital kameralar ile fotoğraf çekilmek istendiğinde, öncelikle ışık, lensten içeri girer. Daha sonra lensten içeri giren ışık, dijital kameralarda yaygın olarak kullanılan CCD (İng: "charge-coupled device") veya CMOS (İng: "Complementary metal-oxide-semiconductor") görüntü sensörlerinden bir tanesinde elektrik sinyallerine dönüştürülür. Basitçe bu sensörler, görüntüyü sıfır ve birler dizisine çevirerek, dijital olarak yapılandırır. Bahsedilen yapılandırma, Kartezyen koordinat sisteminin dördüncü bölgesine yerleştirme işlemi olarak tarif edilebilir. Oluşturulan dijital görüntüyü, her pikselin bir koordinatın yerini aldığı sıfır ve birler dizisi olarak düşünmemiz gerekir.
Ancak sadece sıfır ve birlerden oluşan işlenmemiş veri, bir fotoğrafı oluşturmak için yeterli değildir. Çoğunlukla bu işlenmemiş veri, bulunduğu cihaz içerisindeki başka bir yazılımsal araç ile işlenir ve JPEG (İng: "Joint Photographic Experts Group") dosya formatında kaydedilir. Bir JPEG görüntüsü kaydedilirken, işlenmemiş ham görüntü verileri, RGB (İng: "Red-Green-Blue") piksel değerlerine dönüştürülür (bu işlem "demosaicing" olarak da bilinmektedir). Daha sonra elde edilen değerler, çevirme işleminde kullanılan programda daha önce belirlenmiş olan formüllere göre beyaz dengesi, doygunluk ve keskinleştirme gibi ayarlardan geçer. Bu ayarlar, görüntü dosyasında barındırılmak üzere saklanır.
Kameradan yakalandığı haliyle pikseldeki bir renk kanalı başına 12, 14 veya 16 bit bilgi barındıran görüntü, JPEG için varsayılan bit derinliği olan pikseldeki bir renk kanalı başına 8 bit değerine indirgenir. JPEG dosyasına çevirme işlemi, fotoğraf kalitesinde kayıp yaşatacağından görüntü, ham haliyle veya renk kanalı başına daha yüksek bit depolayan dosya formatlarında saklanabilmektedir. Renk kanalı başına daha yüksek bit kaydeden dosya formatlarına örnek olarak 16 bit kapasiteli TIFF (İng: "Tagged Image File Format") dosya formatı verilebilir. Görüntü dosyası işlenmediği halde, "RAW" dosya formatında kalacaktır.
Ham dosya formatı olan RAW görüntü formatı, minimum düzeyde işlenmiş veri içeren kameranın görüntü sensöründen alınan dosyadır. Hiçbir sıkıştırma uygulanmadığından RAW dosyaları, JPEG dosyalarından çok daha büyüktür. RAW dosyaları renk kanallarında 12, 14 veya 16 bit barındıran dosyalardır. Bir görüntü, bir RAW dosyası olarak kaydedildiğinde, dijital kameranın çözünürlüğüne göre değer almaktadır. Daha sonra görüntü dosyası, JPEG olarak kaydedilirse görüntünün renk kanallarındaki değer, 8 bit ile sınırlandırılmaktadır.
Pikseldeki 1 Renk Başına Depolanabilen Bit Değeri Neyi İfade Eder?
Bir piksel; kırmızı, yeşil ve mavi (RGB) olmak üzere üç renk kanalı barındırmaktadır. Bir renk kanalının, bir JPEG dosyasındaki gibi 8 bit barındırması, bir pikselin 24 (8 * 3) bit barındırmasına eşdeğerdir. Bir bit, 0 veya 1 değerini alan bilişimdeki en küçük hafıza birimidir. 8 bit barındıran bir dizinde toplam 8 tane 0 veya 1 bulunmaktadır, yani her bir birim için 0 ve 1 olmak üzere iki ihtimal vardır. Bu durumda bir renk kanalı, ikinin sekizinci kuvveti kadar ton üretme kapasitesine sahiptir.
Buna göre, 8 bit değerindeki bir renk kanalı, toplam 256 tonda renk üretebilir. 8 tane sıfırın yan yana gelmesiyle oluşan "00000000" değeri, 0'a karşılık gelir. 8 tane 1'in yan yana gelmesiyle oluşan "11111111" değeri ise 255'tir. 0'dan sayılmaya başlandığı için 256'ıncı değer, "255" sayısı ile ifade edilmektedir. Üç renk kanalının da maksimum değerde olması durumunda görüntü beyaz olacaktır. Üç renk kanalı da minimum değerde olduğu durumda görüntü, "siyah" olarak algılanacaktır. Bu değerlerin arasındaki değerlerde olunduğu sürece pikselin rengi, renk değerlerinin ağırlıklarına göre belirlenecektir.
Bir pikseldeki renk kanallarının farklı değerlere göre üretebileceği tonlar şu şekildedir:
- Renk kanalı başına 8 bit = 256 tonda kırmızı, yeşil ve mavi
- Renk kanalı başına 12 bit = 4096 tonda kırmızı, yeşil ve mavi
- Renk kanalı başına 16 bit = 65536 tonda kırmızı, yeşil ve mavi
Filtrelere Göre Piksellerdeki Renk Değerlerinin Ayarlanması
Filtre uygulanacak fotoğrafın JPEG dosya formatı ile yapılandırıldığını, fotoğrafın çözünürlüğünün 1920x1080 olduğunu ve fotoğrafın görüntülendiği ekranın 1920x1080 boyutunda olduğunu varsayalım. 1920x1080 çözünürlüğünü, tekrar Kartezyen koordinat sisteminde düşünelim. Yatay eksen (+X ekseni) 1920 değer barındırırken, düşey ekseni (-Y ekseni), 1080 değer barındıracaktır. Koordinat sistemindeki her koordinatı bir piksel kabul ettiğimiz takdirde, 2.073.600 tane piksel olacaktır. Her bir pikselde 8 bit değer barındıran 3 renk kanalı varsa, toplam 24 bit barındırma potansiyeline sahip 2.073.600 tane piksel bulunmaktadır.
Anlaşılacağı üzere bir fotoğrafa filtre uygulanması, her pikseldeki renk değerlerinin değiştirilmesi ile mümkündür. Dolayısıyla bunun için uygun bir kod yazılması gerekmektedir. Bu kodun asıl işlevi bütün piksellere uğramak olmalıdır. 1080 tane satır ve 1920 tane sütundan oluşan bir koordinat düzleminde tek tek ilerleyip bütün piksellerin renk değerlerini ayarlayan bir fonksiyona ihtiyaç vardır. Filtreler uygulanırken bu tip bir fonksiyonun hâlihazırda çalıştırıldığını ve bu sayede bütün piksellere ulaşıldığını varsayalım.
Evrim Ağacı'nın çalışmalarına Kreosus, Patreon veya YouTube üzerinden maddi destekte bulunarak hem Türkiye'de bilim anlatıcılığının gelişmesine katkı sağlayabilirsiniz, hem de site ve uygulamamızı reklamsız olarak deneyimleyebilirsiniz. Reklamsız deneyim, sitemizin/uygulamamızın çeşitli kısımlarda gösterilen Google reklamlarını ve destek çağrılarını görmediğiniz, %100 reklamsız ve çok daha temiz bir site deneyimi sunmaktadır.
KreosusKreosus'ta her 10₺'lik destek, 1 aylık reklamsız deneyime karşılık geliyor. Bu sayede, tek seferlik destekçilerimiz de, aylık destekçilerimiz de toplam destekleriyle doğru orantılı bir süre boyunca reklamsız deneyim elde edebiliyorlar.
Kreosus destekçilerimizin reklamsız deneyimi, destek olmaya başladıkları anda devreye girmektedir ve ek bir işleme gerek yoktur.
PatreonPatreon destekçilerimiz, destek miktarından bağımsız olarak, Evrim Ağacı'na destek oldukları süre boyunca reklamsız deneyime erişmeyi sürdürebiliyorlar.
Patreon destekçilerimizin Patreon ile ilişkili e-posta hesapları, Evrim Ağacı'ndaki üyelik e-postaları ile birebir aynı olmalıdır. Patreon destekçilerimizin reklamsız deneyiminin devreye girmesi 24 saat alabilmektedir.
YouTubeYouTube destekçilerimizin hepsi otomatik olarak reklamsız deneyime şimdilik erişemiyorlar ve şu anda, YouTube üzerinden her destek seviyesine reklamsız deneyim ayrıcalığını sunamamaktayız. YouTube Destek Sistemi üzerinde sunulan farklı seviyelerin açıklamalarını okuyarak, hangi ayrıcalıklara erişebileceğinizi öğrenebilirsiniz.
Eğer seçtiğiniz seviye reklamsız deneyim ayrıcalığı sunuyorsa, destek olduktan sonra YouTube tarafından gösterilecek olan bağlantıdaki formu doldurarak reklamsız deneyime erişebilirsiniz. YouTube destekçilerimizin reklamsız deneyiminin devreye girmesi, formu doldurduktan sonra 24-72 saat alabilmektedir.
Diğer PlatformlarBu 3 platform haricinde destek olan destekçilerimize ne yazık ki reklamsız deneyim ayrıcalığını sunamamaktayız. Destekleriniz sayesinde sistemlerimizi geliştirmeyi sürdürüyoruz ve umuyoruz bu ayrıcalıkları zamanla genişletebileceğiz.
Giriş yapmayı unutmayın!Reklamsız deneyim için, maddi desteğiniz ile ilişkilendirilmiş olan Evrim Ağacı hesabınıza üye girişi yapmanız gerekmektedir. Giriş yapmadığınız takdirde reklamları görmeye devam edeceksinizdir.
Siyah-Beyaz Filtrelerin Çalışma Mantığı
Siyah-beyaz filtre uygulanan fotoğraftaki her pikselin siyah, beyaz veya grinin bir tonu olarak ayarlanması gerekmektedir. Bu işlem, bir pikseldeki üç renk kanalındaki değerlerin ortalamasının alınması ile başlar. Elde edilen bu değerin tamsayı olmama ihtimali olduğundan, en yakın tamsayıya yuvarlanır. Artık tamsayı olan bu değer, renk kanallarına atanır ve işlem sona erer.
Bir pikselin siyah renkte algılanması için, pikseldeki üç renk değeri de minimum değer olan "0" olarak ayarlanmaktadır. Beyaz renk için ise piksellerdeki renk kanalları, maksimum değer olan "255" olarak ayarlanmalıdır. Ancak 0 ve 255 değerleri en uç değerler olduğundan, yalnızca önceden siyah veya beyaz olan pikseller dışındaki bütün pikseller grinin bir tonu olacaktır.
Bir pikseldeki üç renk kanalına da aynı değer atandığı zaman gösterilen renk, hâlihazırda gridir. Eğer bu ortalama sayısı, 255’e yakınsa grinin daha açık bir tonu elde edilirken, eğer sayı 0’a yakınsa grinin daha koyu bir tonu elde edilir.
Sepya ve Benzeri Renk Değiştiren Filtrelerin Çalışma Mantığı
Sepya filtreleme veya tonlama, fotoğrafın kırmızımsı kahverengi tonlarda gösterilmesini sağlar. Eskiden siyah-beyaz fotoğrafların daha canlı gözükmesi için kimyasal işlemlerle elde edilen bu fotoğraf hilesi, artık fotoğrafların daha nostaljik gözükmesini sağlamak için kullanılmaktadır. Çok popüler olduğundan dolayı birçok dijital kamerada ve telefonlarda bu filtreye ve benzerlerine rastlanmaktadır.
Piksellerin renk kanallarının, sepya tonlaması gibi özel renklere bürünmesi için önceden belirlenmiş formüller kullanılmaktadır. Sepya için kullanılan formül aşağıda belirtilen şekildedir;
Bu tabloda gösterilen yeni renk değerleri, eski değerlerin belirtilen kesirli sayılarla çarpıldıktan sonra toplanıp en yakın tamsayıya yuvarlanması sonucunda belirlenmektedir. Örneklemek gerekirse; bir pikseldeki yeni kırmızı renginin değeri, eski kırmızının 0.393 ile eski yeşilin 0.769 ile eski mavinin ise 0.189 ile çarpılıp kendi aralarında toplandıktan sonra en yakın tamsayıya yuvarlanması sonucunda oluşmaktadır.
Bütün eski renk değerlerinin kullanılarak tek bir renk değerini belirlediği bu formül, fotoğrafları sepya tonlarına yakınlaştırmaktadır. Formül sonucunda renk kanalına atanması beklenen değer 255’ten büyük olabilmektedir. Bu durumun önlemesi için işlem sonucu 255’i geçtiği takdirde, renk kanalı, direkt 255 değerini almalıdır.
Ayna Filtrelerinin Çalışma Mantığı
Ayna tipi filtreler, adından da anlaşılacağı üzere, fotoğrafı çevirmeye yararlar. Düz aynada oluşan yansımayı temel alan bu tip filtreler, görüntüyü dik yönde ters çevirirler. (X, Y) koordinatlarına sahip bir görüntü, ayna filtresinden sonra (-X, Y) koordinatlarına sahip olacaktır.
Diğer filtrelere benzer şekilde ayna filtresinde de bütün pikselleri tarayan döngülere ihtiyaç vardır. Ancak bu filtrede piksellerin renk değerleri değiştirilmeyip piksellerin koordinatları değiştirilmektedir. Aynı sırada kalan pikseller, sütun değiştirerek fotoğrafın yansımasını oluşturmaktadır. Ayna filtresine uygun bir kod yazılırken, piksellerin yerleri sürekli değişeceğinden dolayı, işlem sırasında kullanılmak üzere geçici bir fotoğraf oluşturulmalıdır. Yapılacak değişiklikler geçici görselde yapılmazsa, pikseller yer değiştirirler ancak bir süre sonra yer değiştiren pikseller tekrar yer değiştireceğinden, fotoğrafta istenen gibi bir değişiklik olmaz. Bu yüzden değişiklikler, asıl fotoğraftan alınan piksellerin geçici fotoğrafta konumlandırılması yöntemiyle yapılmalıdır. İşlem bittiğinde geçici fotoğrafın değerleri asıl fotoğrafa aktarılarak asıl fotoğrafın filtre uygulanmış hâli elde edilir.
Bulanıklaştırma ve Keskinleştirme Filtrelerinin Çalışma Mantığı
Bir fotoğraf bulanıklaştırılmak istendiğinde, bir pikselin çevresindeki piksellere göre tekrar renklendirilmesi gerekmektedir. Fotoğrafın ne kadar bulanıklaştırılmak istendiğine göre pikselin çevresinde ne kadar pikselin bu işleme dâhil edileceği ayarlanır. Görselin kenarlarında ve köşelerinde bulunmayan pikselleri çevreleyen 8 tane piksel vardır. Kenar piksellerinde 5, köşe piksellerinde ise 3 piksel, asıl pikseli çevrelemektedir.
Bulanıklaştırma işleminin sertliğine göre bir pikselin çevresindeki piksellerden ne kadarının kullanılacağı belirlenir. Eğer piksel, kenarda veya köşede değilse, onu çevreleyen 8 pikseli çevreleyen 16 piksel de bulanıklaştırma işlemine dâhil edildiğinde görüntü, daha bulanık olacaktır. Basit bir bulanıklaştırma işlemi için bir pikselin kendisi ve onu çevreleyen 8 pikselin renk değerlerinin ortalaması alınarak, piksele atanır. Bu işlem, bütün pikselleri içine alacak şekilde devam eder ve işlem sonunda bütün pikseller birbirine daha yakın renklerden oluşur.
Ayna filtrelerindeki gibi, işlemin sağlıklı gerçekleşebilmesi için yazılan kod içerisindeki geçici bir fotoğrafta değişiklikler yapılmalıdır. Yoksa bulanıklaştırma işlemi, sürekli değişen pikseller üzerinden devam eder ve amacına ulaşamaz.
Netleştirme veya keskinleştirme filtreleri ise bir görüntüdeki kenarları belirleyip, vurgulayarak çalışır. Bulanıklaştırma filtresinde olduğu gibi, keskinleştirme filtreleri de piksellerin çevresindeki pikselleri kullanmaktadır. Ancak bulanıklaştırma filtresinin tersine, keskinleştirme filtresi, çevre piksellerin renk değerlerinin ortalamasını almak yerine farklılıkları arar. Eğer bir pikselin çevresindeki piksellerden daha farklı olduğu tespit edilirse bu, görüntüdeki bir objenin veya kenarın belirtisi olarak kabul edilir. Bu sınır noktalarındaki karanlık alanlar daha fazla karartılır ve parlak alanlar daha fazla parlatılır. Böylece kenarlar daha belirgin, gölgeler ise daha koyu hale gelir. Sonuç olarak fotoğrafta öne çıkarılmak istenen nesne, daha dikkat çekici olur.
Sonuç
Dijital fotoğraflar gelişip, sosyal medya gibi araçların kullanımına bağlı olarak ihtiyaçlar değiştikçe yazılım mühendisleri de yepyeni algoritmalar ve yöntemler kullanarak fotoğraflarımızı ve hatta yüksek işlemci gücüne sahip telefonlar sayesinde videolarımızı şekilden şekle sokabilecek yöntemler geliştirmektedirler. Ancak her yöntem, aşağı yukarı bu yazıda anlattığımız temel mantığı takip etmektedir: Pikseller veya piksel grupları, istenen etkiyi verecek şekilde manipüle edilir ve gerek anlık olarak gerekse de hâlihazırda çekilmiş bir fotoğrafın manipülasyonunda kullanılır.
Bir dahaki sefere, tek bir tuşla fotoğrafınızı biraz daha "artistik" hâle getirdiğinizde, artık arka planda az çok neler döndüğünü biliyorsunuz.
İçeriklerimizin bilimsel gerçekleri doğru bir şekilde yansıtması için en üst düzey çabayı gösteriyoruz. Gözünüze doğru gelmeyen bir şey varsa, mümkünse güvenilir kaynaklarınızla birlikte bize ulaşın!
Bu içeriğimizle ilgili bir sorunuz mu var? Buraya tıklayarak sorabilirsiniz.
Soru & Cevap Platformuna Git- 11
- 5
- 2
- 1
- 1
- 1
- 1
- 1
- 1
- 0
- 0
- 0
- Q. Luan, et al. (2007). Natural Image Colorization. Eurographics Symposium on Rendering, sf: 309-320. | Arşiv Bağlantısı
- N. Kullström. (Tez, 2017). The Digitalization Of The Image – A Pixelated Future. Not: 146 sayfa içermektedir..
- S. Jeyalaksshmi, et al. (2018). Measuring Distinct Regions Of Grayscale Image Using Pixel Values. International Journal of Engineering & Technology, sf: 121-124. | Arşiv Bağlantısı
- J. Brauers, et al. (2006). A Color Filter Array Based Multispectral Camera. 12. Workshop Farbbildverarbeitung. | Arşiv Bağlantısı
- Nikon Support Team. Understanding Raw Files. (21 Aralık 2016). Alındığı Tarih: 22 Temmuz 2021. Alındığı Yer: Nikon Asia Support | Arşiv Bağlantısı
- M. Bar. (2004). Visual Objects In Context. Nature Reviews Neuroscience, sf: 617-629. doi: 10.1038/nrn1476. | Arşiv Bağlantısı
- G. Ward, et al. (1991). Graphics Gems Ii. ISBN: 978-0120644810. Yayınevi: Academic Press. sf: 643.
Evrim Ağacı'na her ay sadece 1 kahve ısmarlayarak destek olmak ister misiniz?
Şu iki siteden birini kullanarak şimdi destek olabilirsiniz:
kreosus.com/evrimagaci | patreon.com/evrimagaci
Çıktı Bilgisi: Bu sayfa, Evrim Ağacı yazdırma aracı kullanılarak 22/12/2024 07:14:03 tarihinde oluşturulmuştur. Evrim Ağacı'ndaki içeriklerin tamamı, birden fazla editör tarafından, durmaksızın elden geçirilmekte, güncellenmekte ve geliştirilmektedir. Dolayısıyla bu çıktının alındığı tarihten sonra yapılan güncellemeleri görmek ve bu içeriğin en güncel halini okumak için lütfen şu adrese gidiniz: https://evrimagaci.org/s/10764
İçerik Kullanım İzinleri: Evrim Ağacı'ndaki yazılı içerikler orijinallerine hiçbir şekilde dokunulmadığı müddetçe izin alınmaksızın paylaşılabilir, kopyalanabilir, yapıştırılabilir, çoğaltılabilir, basılabilir, dağıtılabilir, yayılabilir, alıntılanabilir. Ancak bu içeriklerin hiçbiri izin alınmaksızın değiştirilemez ve değiştirilmiş halleri Evrim Ağacı'na aitmiş gibi sunulamaz. Benzer şekilde, içeriklerin hiçbiri, söz konusu içeriğin açıkça belirtilmiş yazarlarından ve Evrim Ağacı'ndan başkasına aitmiş gibi sunulamaz. Bu sayfa izin alınmaksızın düzenlenemez, Evrim Ağacı logosu, yazar/editör bilgileri ve içeriğin diğer kısımları izin alınmaksızın değiştirilemez veya kaldırılamaz.