Kayıt Formatları ve JPEG



Resim dosyaları

Grafik dosyalarında BMP, GIF, JPEG, PNG,TIFF gibi pek çok farklı dosya türü ve kendi özelliklerine göre kullanım özellikleri ve şekilleri var.

Bunların arasında BMP yani Bitmapsıkıştırılmamış tek grafik dosya türüdür. 24-bit'lik bir resimde her bir pikselin bilgileri 3 ayrı bayt ile tutulur. Her bir bayt RGB olarak ifade edilen üç temel rengin yani kırmızı (R), yeşil (G) ve mavi (B) bilgilerini ayrı ayrı saklarlar.

GIF (Graphics Interchange Format = Grafik Değiştirme Biçimi) resimler için sıkıştırma algoritmaların güzel bir örneğidir. Olukça da başarılı sıkıştırma oranı sağlayan GIF'in en büyük sorunu sadece 256 renk bilgisi taşıyabilmesidir. Bir GIF dosyası oluşturulurken bunu sağlayan program, GIF algoritması ile sıkıştırılacak olan görüntünün sadece 256 renkten oluşan paletini çıkartır. Bunu sağlamak için de birbirlerine yakın renk değeri olan pikseller arasında bir tercih yapar ve en uygun görünen rengin bilgisini, benzerleri için de kullanır. Özellikle çok daha fazla renk çeşidi bulunan fotoğraflarda bu önemli bir verikaybı anlamına gelir.

JFIF (JPEG File Interchange Format) olarak da ismine rastlayabileceğiniz JPEG ise daha farklı bir sıkıştırma yöntemine sahiptir. 1986 yılında kurulan Joint Photographic Experts Group, "renkli ve gri tonlarındaki resimlerin" sıkıştırılması için bir standart oluşturmayı hedefliyordu. 1992 yılında ortaya konulan standartlar, 1994 yılında resmiyet kazandı.

Kayıpsız ve sıkıştırılmamış Bitmap grafikleri JPEG'e dönüştürmek için öncelikle standart renk paleti olan RGB, YCbCr olarak adlandırılan farklı bir palet türüne dönüştürülür. Özellikle televizyon sinyallerinde kullanılan bu renk paleti, her ne kadar RGB ile benzer renk aralığına sahip olsa da renkleri farklı bir yöntem ile kodlar. Cb ve Cr bileşenleri (kroma olarak da adlandırılı) kırmızı ve mavi renklerin yoğunluğunu ifade ederken, Y bileşeni renklerin parlaklık değerini taşır.

RGB değeri taşıyan tek bir pikselin bilgilerini bu renk türüne dönüştürmek için özel bir formül kullanılır. Dönüştürme işlemini hızlandırmak için hesaplamaların bazı kısımları o anda yapılmaz, daha önceden yapılmış hesaplamaların depolandığı veri bankalarından faydalanılır. Bu sayede dönüştürme esnasında performanstan ödün verilmemiş olur.

Bundan sonra ise insan gözünün parlaklık algılama özelliği devreye girer. İnsan gözü düşük ışıkta sadece beyaz ve siyah renkleri tanımlayabilir. İnsan gözünün renklerden önce parlaklığı ayırt edebilmesi nedeniyle JPEG önceliği Cb ve Cr değerlerine değil, Ydeğerine verir. JPEG formatında resmin boyutlarını küçültmek için piksellerde taşınan bazı değerlerin ortadan kaldırılması gerekmektedir. Bu işlem JPEG formatı dönüştürmesinde üç farklı şekilde gerçekleşebilir. İlk seçenek hiçbir değeri ortadan kaldırmamaktır. İkincisi kroma değerlerini yatay olarak ikiye bölmek ve üçüncüsü ise kroma değerlerini hem yatay, hem dikey olarak ikiye bölmektir. Bu sayede sıkıştırma işlemi esnasında ilk veri kayıpları ortaya çıkmaya başlar.

Ayrık Kosinüs Dönüşümü

Ayrık Kosinüs Dönüşümü
Resimler 8 x 8 ebatlarında piksel bloklarına bölünüyor.
Bir sonraki adımda, resmi oluşturan pikseller 8 x 8 boyutlarında piksel gruplarına ayrılır. Bu ayırma işlemi her renk değeri için ayrı ayrı yapılır. Fakat tüm resimler 8 x 8 oranlarında olmayabilir. Bu yüzden zaman zamanJPEG resimlerin sağ alt köşelerinde piksellerin sıkışmasından meydana gelen bozukluklar gözlenebilir.

Sonraki aşamada bu 8 x 8 ebatlarındaki piksel blokları, Discrete Cosine Transform (DCT) yani Ayrık Kosinüs Dönüşümü adı verilen bir işleme tabi tutulur. Bu aşamada resmin dikey ve yatay orijinal renk değerleri, özel bir formül yardımıyla hesaplanır ve frekanslarının en yüksek ve düşük olduğu noktalar saptanır. Bu işlemin sebebi aslında en yüksek frekanslardaki renklerin tespit edilmesidir. İnsan gözü yüksek frekansları ayırt etmekte zorlandığı için bunları düşürmek vehatta sıfıra indirmek mümkündür.

Yeniden oluşturma

Yeniden oluşturma
Yüksek sıkıştırma oranları düşük kaliteli resimler oluşturuyor.
Bundan sonra ise en yüksek frekansların değerleri düşürülür veya sıfırlanır. Bunun sonucu olarak 8 x 8 ebatlarındaki piksel bloklarının her birinin ayrı kalite değerleri oluşur. Bundan sonra tüm 8 x 8'lik blokların kalite değerleri özel bir hesaplama ile birbirine yaklaştırılır, bir anlamda kalite değerlerinin ortalaması alınır. Ardından her bir 8 x 8 piksel bloğuHuffman sıkıştırma metoduna tabi tutulur. Bu noktada her 8 x 8'lik piksel bloğu için üç adet 8 x 8'lik matris oluşturulur. 192 bayt veriye denk düşen bu aşamada en çok sıkıştırılmış olan matrisler Cr ve Cbdeğerlerine ait olan verilerdir.

Bu şekilde sıkıştırılan resim daha hızlı transfer edilir ve görüntüleneceği zaman tüm bu işlemler tersi bir şekilde uygulanır ve sıkıştırılma açılır. Önce Huffman metodu tersine çalışır, ArdındanDCT işlemi tersine döndürülür ve sonrasında piksellerin YCrCb verileri eldilmiş olur. Son adımda YCrCb değerleri, ilk yapılan işlemin tersine bu kez RGB'ye dönüştürülür ve karşımıza ilk Bitmap görüntüsü çıkar. Tabi ki JPEG tam kayıpsız bir sıkıştırma metodu olmadığı için karşınıza çıkan görüntü, ilk Bitmap resimle farklılıklar gösterebilir. Fakat mantık kaliteden ödün vererek, dosya boyutunu küçültmek olduğu için bu zaten en baştan göz alınmış bir kayıptır. Pek çok program, JPEG kayıt etme esnasında size yüzde olarak arzu ettiğiniz kalitenin seviyesini sorar. Sizden aldığı bu veriye göre renklerin sıkıştırılma oranını belirler ve yüksek sıkıştırma oranları renk değerlerinde gözle görülür değişimlere yol açabilir.

KAYNAK: CHIP

Hiç yorum yok: