JPEG

bilgipedi.com.tr sitesinden
JPEG
Felis silvestris silvestris small gradual decrease of quality.png
Sıkıştırma oranı azalan ve dolayısıyla kalitesi artan bir Avrupa yaban kedisi fotoğrafı, soldan sağa
Dosya adı uzantısı
.jpg, .jpeg, .jpe
.jif, .jfif, .jfi
İnternet medya türü
image/jpeg
Tip koduJPEG
Tek Tip Tip Tanımlayıcı (UTI)public.jpeg
Sihirli sayıff d8 ff
Tarafından geliştirilmiştirJoint Photographic Experts Group, IBM, Mitsubishi Electric, AT&T, Canon Inc.
İlk sürüm18 Eylül 1992; 30 yıl önce
Format türüKayıplı görüntü sıkıştırma formatı
StandartISO/IEC 10918, ITU-T T.81, ITU-T T.83, ITU-T T.84, ITU-T T.86
Web sitesiwww.jpeg.org/jpeg/
Bir abdominal BT taraması için sürekli değişen JPEG sıkıştırması (Q=100 ve Q=1 arasında)

JPEG (/ˈpɛɡ/ JAY-peg), dijital görüntüler, özellikle de dijital fotoğrafçılıkla üretilen görüntüler için yaygın olarak kullanılan bir kayıplı sıkıştırma yöntemidir. Sıkıştırma derecesi ayarlanabilir ve depolama boyutu ile görüntü kalitesi arasında seçilebilir bir değiş tokuş sağlar. JPEG tipik olarak görüntü kalitesinde çok az algılanabilir kayıpla 10:1 sıkıştırma elde eder. JPEG, 1992'de piyasaya sürülmesinden bu yana dünyada en yaygın kullanılan görüntü sıkıştırma standardı ve 2015 itibariyle her gün üretilen birkaç milyar JPEG görüntü ile en yaygın kullanılan dijital görüntü formatı olmuştur.

"JPEG" terimi, 1992 yılında standardı oluşturan Joint Photographic Experts Group'un kısaltmasıdır. JPEG'in kayıplı görüntü sıkıştırması, ilk olarak 1972 yılında Nasir Ahmed tarafından önerilen bir teknik olan ayrık kosinüs dönüşümüne (DCT) dayanmaktadır. JPEG, dijital görüntülerin ve dijital fotoğrafların İnternet'te ve daha sonra sosyal medyada yaygınlaşmasından büyük ölçüde sorumludur.

JPEG sıkıştırması bir dizi görüntü dosyası formatında kullanılır. JPEG/Exif, dijital kameralar ve diğer fotoğrafik görüntü yakalama cihazları tarafından kullanılan en yaygın görüntü formatıdır; JPEG/JFIF ile birlikte, World Wide Web'de fotoğrafik görüntülerin depolanması ve iletilmesi için en yaygın formattır. Bu format varyasyonları genellikle ayırt edilmez ve basitçe JPEG olarak adlandırılır.

JPEG için MIME ortam türü, JPEG görüntüleri yüklerken image/pjpeg MIME türü sağlayan eski Internet Explorer sürümleri dışında image/jpeg'dir. JPEG dosyaları genellikle .jpg veya .jpeg dosya adı uzantısına sahiptir. JPEG/JFIF maksimum 65,535×65,535 piksel görüntü boyutunu, dolayısıyla 1:1 en boy oranı için 4 gigapiksele kadar destekler. 2000 yılında JPEG grubu, JPEG 2000 adında bir halefi olması amaçlanan bir format tanıttı, ancak baskın görüntü standardı olarak orijinal JPEG'in yerini alamadı.

JPEG bir fotoğrafın Adobe Photoshop üzerinde yakınlaştırılması sonucunda oluşan görüntü bozulması.

JPEG, Joint Photographic Experts Group (Birleşik Fotoğraf Uzmanları Grubu) tarafından standartlaştırılmış bir sayısal görüntü kodlama biçimidir. Bu biçim, 1994 yılında ISO 10918-1 adıyla standartlaşmıştır.

Tarihçe

Arka plan

1992'de yayınlanan orijinal JPEG spesifikasyonu, CCITT (şimdi ITU-T) ve Joint Photographic Experts Group tarafından atıfta bulunulan çeşitli önceki araştırma makalelerinden ve patentlerden süreçleri uygular. JPEG'in kayıplı sıkıştırma algoritmasının ana temeli, ilk olarak 1972 yılında Nasir Ahmed tarafından bir görüntü sıkıştırma tekniği olarak önerilen ayrık kosinüs dönüşümüdür (DCT). Ahmed, 1973 yılında Kansas Eyalet Üniversitesi'nden T. Natarajan ve Arlington'daki Texas Üniversitesi'nden K. R. Rao ile birlikte pratik bir DCT algoritması geliştirmiştir. Onların 1974 tarihli makalesi JPEG spesifikasyonunda, Wen-Hsiung Chen, C.H. Smith ve S.C. Fralick'in hızlı bir DCT algoritmasını tanımlayan 1977 tarihli makalesi, N.J. Narasinha ve S.C. Fralick'in 1978 tarihli makalesi ve B.G. Lee'nin 1984 tarihli makalesi de dahil olmak üzere DCT üzerinde daha fazla çalışma yapan daha sonraki birkaç araştırma makalesi ile birlikte alıntılanmıştır. Spesifikasyon ayrıca Wen-Hsiung Chen ve W.K. Pratt'in 1984 tarihli bir makalesini niceleme algoritması ve David A. Huffman'ın 1952 tarihli makalesini Huffman kodlama algoritması için bir etki olarak gösterir.

JPEG spesifikasyonu çeşitli şirketlerin patentlerine atıfta bulunmaktadır. Aşağıdaki patentler aritmetik kodlama algoritmasının temelini oluşturmuştur.

  • IBM
    • ABD Patenti 4,652,856 - 4 Şubat 1986 - Kottappuram M. A. Mohiuddin ve Jorma J. Rissanen - Çarpımsız çoklu alfabe aritmetik kodu
    • ABD Patenti 4,905,297 - 27 Şubat 1990 - G. Langdon, J.L. Mitchell, W.B. Pennebaker ve Jorma J. Rissanen - Aritmetik kodlama kodlayıcı ve kod çözücü sistemi
    • ABD Patenti 4,935,882 - 19 Haziran 1990 - W.B. Pennebaker ve J.L. Mitchell - Aritmetik kodlayıcılar için olasılık uyarlaması
  • Mitsubishi Electric
    • JP H02202267 (1021672) - 21 Ocak 1989 - Toshihiro Kimura, Shigenori Kino, Fumitaka Ono, Masayuki Yoshida - Kodlama sistemi
    • JP H03247123 (2-46275) - 26 Şubat 1990 - Fumitaka Ono, Tomohiro Kimura, Masayuki Yoshida ve Shigenori Kino - Kodlama aparatı ve kodlama yöntemi

JPEG spesifikasyonu ayrıca IBM'e ait üç patente daha atıfta bulunmaktadır. Patent sahibi olarak gösterilen diğer şirketler arasında AT&T (iki patent) ve Canon Inc. bulunmaktadır. Listede Compression Labs'den Wen-Hsiung Chen ve Daniel J. Klenke tarafından Ekim 1986'da başvurusu yapılan 4,698,672 sayılı ABD Patenti yer almamaktadır. Patent DCT tabanlı bir görüntü sıkıştırma algoritmasını tanımlamaktadır ve daha sonra 2002 yılında tartışmalara neden olacaktır (aşağıdaki Patent tartışmalarına bakınız). Bununla birlikte, JPEG spesifikasyonu Wen-Hsiung Chen tarafından 1977 ve 1984 yıllarında yayınlanan daha önceki iki araştırma makalesine atıfta bulunmuştur.

JPEG standardı

"JPEG", JPEG standardını ve diğer fotoğraf kodlama standartlarını oluşturan komitenin adı olan Joint Photographic Experts Group'un kısaltmasıdır. "Joint", ISO TC97 WG8 ve CCITT SGVIII'i temsil ediyordu. 1986 yılında kurulan grup, 1980'lerin sonlarında JPEG standardını geliştirdi. İnceledikleri çeşitli dönüşüm kodlama teknikleri arasından, açık ara en verimli pratik sıkıştırma tekniği olduğu için ayrık kosinüs dönüşümünü (DCT) seçtiler. Grup JPEG standardını 1992 yılında yayınladı.

1987'de ISO TC 97, ISO/IEC JTC1 oldu ve 1992'de CCITT, ITU-T oldu. Şu anda JTC1 tarafında JPEG, ISO/IEC Ortak Teknik Komitesi 1, Alt Komite 29, Çalışma Grubu 1'in (ISO/IEC JTC 1/SC 29/WG 1) hareketsiz resimlerin kodlanması başlıklı iki alt grubundan biridir. ITU-T tarafında ise ITU-T SG16 ilgili organdır. Orijinal JPEG Grubu 1986'da organize edilmiş, 1992'de ilk JPEG standardını yayınlamış, bu standart Eylül 1992'de ITU-T Recommendation T.81 ve 1994'te ISO/IEC 10918-1 olarak onaylanmıştır.

JPEG standardı, bir görüntünün bir bayt akışına nasıl sıkıştırıldığını ve tekrar bir görüntüye nasıl açıldığını tanımlayan codec bileşenini belirtir, ancak bu akışı içermek için kullanılan dosya biçimini belirtmez. Exif ve JFIF standartları JPEG ile sıkıştırılmış görüntülerin değişimi için yaygın olarak kullanılan dosya formatlarını tanımlar.

JPEG standartları resmi olarak Bilgi teknolojisi - Sürekli tonlu hareketsiz görüntülerin dijital sıkıştırılması ve kodlanması olarak adlandırılır. ISO/IEC 10918 aşağıdaki bölümlerden oluşmaktadır:

Sürekli tonlu hareketsiz görüntülerin dijital sıkıştırılması ve kodlanması - Bölümler
Parça ISO/IEC standardı ITU-T Rec. Halka açık ilk yayın tarihi Son değişiklik Başlık Açıklama
Bölüm 1 ISO/IEC 10918-1:1994 T.81 (09/92) Eylül 18, 1992 Gereklilikler ve kılavuz ilkeler
Bölüm 2 ISO/IEC 10918-2:1995 T.83 (11/94) 11 Kasım 1994 Uyumluluk testi Yazılım uygunluğu için kurallar ve kontroller (Kısım 1'e).
Bölüm 3 ISO/IEC 10918-3:1997 T.84 (07/96) 3 Temmuz 1996 1 Nisan 1999 Uzantılar Still Picture Interchange File Format (SPIFF) dahil olmak üzere Bölüm 1'i geliştirmek için uzantılar kümesi.
Bölüm 4 ISO/IEC 10918-4:1999 T.86 (06/98) 18 Haziran 1998 29 Haziran 2012 JPEG profillerinin, SPIFF profillerinin, SPIFF etiketlerinin, SPIFF renk uzaylarının, APPn işaretleyicilerinin, SPIFF sıkıştırma türlerinin ve Kayıt Yetkililerinin (REGAUT) kaydı JPEG'i genişletmek için kullanılan bazı parametreleri kaydetme yöntemleri
Bölüm 5 ISO/IEC 10918-5:2013 T.871 (05/11) 14 Mayıs 2011 JPEG Dosya Değişim Formatı (JFIF) JPEG standardı tarafından kodlanan görüntüler için fiili dosya formatı olan popüler bir format. 2009 yılında JPEG Komitesi, JFIF'i JPEG Bölüm 5 olarak standartlaştırmak için resmi olarak bir Ad Hoc Grubu kurmuştur.
Bölüm 6 ISO/IEC 10918-6:2013 T.872 (06/12) Haziran 2012 Baskı sistemlerine uygulama Baskı için ISO/IEC 10918-1'e göre kodlanmış görüntülerin değişimi için özelliklerin ve uygulama araçlarının bir alt kümesini belirtir.
Bölüm 7 ISO/IEC 10918-7:2021 T.873 (06/21) Mayıs 2019 Haziran 2021 Referans Yazılım JPEG çekirdek kodlama sisteminin referans uygulamalarını sağlar

Ecma International TR/98 JPEG Dosya Değişim Formatını (JFIF) belirler; ilk baskı Haziran 2009'da yayınlanmıştır.

Patent tartışmaları

2002 yılında Forgent Networks, 27 Ekim 1986'da dosyalanan ve 6 Ekim 1987'de verilen bir patentten kaynaklanan JPEG teknolojisinin patent haklarına sahip olduğunu ve bunları uygulayacağını iddia etti: Compression Labs'den Wen-Hsiung Chen ve Daniel J. Klenke tarafından alınan ABD Patenti 4,698,672. Forgent o sırada Compression Labs'in sahibi olmasa da, Chen Cisco'da çalışmaya başlamadan önce Compression Labs'i Forgent'a satmıştır. Bu durum Forgent'ın patent üzerinde sahiplik kazanmasına yol açtı. Forgent'ın 2002'deki duyurusu, Unisys'in GIF görüntü sıkıştırma standardı üzerinde hak iddia etme girişimlerini anımsatan bir öfke yarattı.

JPEG komitesi 2002 yılında patent taleplerini incelemiş ve çeşitli uzmanlar tarafından paylaşılan bir görüş olan önceki teknik tarafından geçersiz kılındıkları görüşüne varmıştır. Patent, Nasir Ahmed, T. Natarajan ve K. R. Rao'nun 1974 tarihli bir makalesinden kaynaklanan kayıplı bir görüntü sıkıştırma tekniği olan ayrık kosinüs dönüşümüne (DCT) dayalı bir görüntü sıkıştırma algoritmasını tanımlamaktadır. Wen-Hsiung Chen, DCT tekniğini daha da geliştirerek C.H. Smith ve S.C. Fralick ile birlikte 1977 tarihli bir makalede hızlı bir DCT algoritması tanımlamıştır. 1992 JPEG spesifikasyonu, DCT algoritması için hem 1974 tarihli Ahmed makalesine hem de 1977 tarihli Chen makalesine ve niceleme algoritması için Chen ve W.K. Pratt'in 1984 tarihli makalesine atıfta bulunmaktadır. Chen 1986 yılında Klenke ile birlikte DCT tabanlı görüntü sıkıştırma algoritması için patent başvurusunda bulunduğunda, daha sonra JPEG standardı haline gelecek olanların çoğu önceki literatürde zaten formüle edilmişti. JPEG temsilcisi Richard Clark ayrıca Chen'in kendisinin de JPEG komitelerinden birinde yer aldığını iddia etmiş, ancak Forgent bu iddiayı reddetmiştir.

2002 ve 2004 yılları arasında Forgent, patentlerini 30 kadar şirkete lisanslayarak yaklaşık 105 milyon ABD doları elde etmeyi başardı. Nisan 2004'te Forgent, daha fazla lisans ödemesi yapılmasını sağlamak için 31 şirkete daha dava açtı. Aynı yılın Temmuz ayında, 21 büyük bilgisayar şirketinden oluşan bir konsorsiyum, patenti geçersiz kılmak amacıyla bir karşı dava açtı. Buna ek olarak, Microsoft Nisan 2005'te Forgent'a karşı ayrı bir dava açtı. Şubat 2006'da Birleşik Devletler Patent ve Ticari Marka Ofisi, Kamu Patent Vakfı'nın talebi üzerine Forgent'in JPEG patentini yeniden incelemeyi kabul etti. 26 Mayıs 2006 tarihinde USPTO, önceki tekniğe dayanarak patenti geçersiz buldu. USPTO ayrıca Forgent'ın önceki tekniği bildiğini, ancak bunu Patent Ofisi'ne söylemekten kasıtlı olarak kaçındığını tespit etti. Bu durum, patentin eski haline getirilmesi için yapılacak herhangi bir başvurunun başarılı olma ihtimalini oldukça düşürmektedir.

Forgent ayrıca 1994 yılında Avrupa Patent Ofisi tarafından verilen benzer bir patente de sahiptir, ancak bunun ne kadar uygulanabilir olduğu belirsizdir.

27 Ekim 2006 itibariyle, ABD patentinin 20 yıllık süresi dolmuş görünmektedir ve Kasım 2006'da Forgent, JPEG standardının kullanımına karşı patent taleplerinin uygulanmasından vazgeçmeyi kabul etmiştir.

JPEG komitesi, standartlarının (özellikle de temel yöntemlerinin) lisans ücreti ödenmeden uygulanabilir olmasını açık hedeflerinden biri olarak belirlemiştir ve JPEG 2000 standardı için 20'den fazla büyük kuruluştan uygun lisans haklarını temin etmişlerdir.

Ağustos 2007'den itibaren başka bir şirket, Global Patent Holdings, LLC, 1993'te verilen patentinin (U.S. Patent 5,253,341) JPEG görüntülerinin bir web sitesi ya da e-posta yoluyla indirilmesiyle ihlal edildiğini iddia etmiştir. Geçersiz kılınmazsa, bu patent JPEG görüntüleri gösteren herhangi bir web sitesi için geçerli olabilir. Patent, 2000 yılından 2007 yılına kadar ABD Patent ve Marka Ofisi tarafından yeniden incelenmiştir; Temmuz 2007'de Patent Ofisi patentin tüm orijinal istemlerini iptal etmiş ancak Global Patent Holdings tarafından önerilen ek bir istemin (istem 17) geçerli olduğuna karar vermiştir. Global Patent Holdings daha sonra patentinin 17. istemine dayanarak bir dizi dava açmıştır.

Yeniden incelemeyi takiben her ikisi de Chicago, Illinois'de açılan ilk iki davada Global Patent Holdings Green Bay Packers, CDW, Motorola, Apple, Orbitz, Officemax, Caterpillar, Kraft ve Peapod'u davalı olarak göstermiştir. Üçüncü dava 5 Aralık 2007 tarihinde Güney Florida'da ADT Security Services, AutoNation, Florida Crystals Corp., HearUSA, MovieTickets.com, Ocwen Financial Corp. ve Tire Kingdom aleyhine, dördüncü dava ise 8 Ocak 2008 tarihinde Güney Florida'da Boca Raton Resort & Club aleyhine açılmıştır. Nevada'da Global Patent Holdings aleyhine beşinci bir dava açılmıştır. Bu dava, Global Patent Holdings tarafından tehdit edildiği iddia edilen Zappos.com, Inc. tarafından açılmış ve '341 patentinin geçersiz olduğuna ve ihlal edilmediğine dair bir yargı beyanı talep edilmiştir.

Global Patent Holdings ayrıca '341 patentini, Gregory Aharonian ve "Patent Troll Tracker" olarak bilinen bir web sitesi blogunun anonim operatörü de dahil olmak üzere geniş yazılım patentlerinin açık sözlü eleştirmenlerini dava etmek veya tehdit etmek için kullanmıştı. 21 Aralık 2007'de Chicago'lu patent avukatı Vernon Francissen, ABD Patent ve Marka Ofisi'nden '341 patentinin kalan tek talebini yeni önceki tekniğe dayanarak yeniden incelemesini istedi.

5 Mart 2008 tarihinde, ABD Patent ve Marka Ofisi, yeni önceki tekniğin patentin geçerliliğine ilişkin önemli yeni sorular ortaya çıkardığını tespit ederek '341 patentini yeniden incelemeyi kabul etti. Yeniden inceleme ışığında, derdest beş davanın dördünde ihlalle suçlananlar, ABD Patent ve Marka Ofisi'nin '341 patenti hakkındaki incelemesi tamamlanana kadar davalarını askıya almak (durdurmak) için dilekçe verdiler. 23 Nisan 2008'de Chicago, Illinois'deki iki davaya başkanlık eden bir yargıç bu davalardaki talepleri kabul etti. 22 Temmuz 2008'de Patent Ofisi ikinci yeniden incelemenin ilk "Ofis Eylemini" yayınladı ve on dokuz ayrı gerekçeye dayanarak talebi geçersiz buldu. 24 Kasım 2009 tarihinde, tüm istemleri iptal eden bir Yeniden İnceleme Sertifikası düzenlenmiştir.

2011 yılında başlayan ve 2013 yılının başlarından itibaren devam eden süreçte, Doğu Teksas merkezli Princeton Digital Image Corporation olarak bilinen bir kuruluş, 4,813,056 sayılı ABD Patentinin ihlali iddiasıyla çok sayıda şirkete dava açmaya başladı. Princeton, JPEG görüntü sıkıştırma standardının '056 patentini ihlal ettiğini iddia ediyor ve çok sayıda web sitesi, perakendeci, kamera ve cihaz üreticisi ve satıcısına dava açtı. Patent başlangıçta General Electric'e aitti ve ona tahsis edilmişti. Patentin süresi Aralık 2007'de doldu, ancak Princeton bu patenti "geçmişte ihlal ettiği" gerekçesiyle çok sayıda şirkete dava açtı. (ABD patent yasalarına göre, bir patent sahibi davanın açılmasından altı yıl öncesine kadar "geçmiş ihlal" için dava açabilir, bu nedenle Princeton teorik olarak Aralık 2013'e kadar şirketlere dava açmaya devam edebilirdi). Mart 2013 itibariyle Princeton'ın New York ve Delaware'de 55'ten fazla şirkete karşı açtığı davalar devam ediyordu. General Electric'in davaya dahil olup olmadığı bilinmemekle birlikte, mahkeme kayıtları patenti 2009 yılında Princeton'a devrettiğini ve patent üzerindeki belirli haklarını koruduğunu göstermektedir.

Tipik kullanım

JPEG sıkıştırma algoritması, yumuşak ton ve renk değişimlerine sahip gerçekçi sahnelerin fotoğraflarında ve resimlerinde en iyi şekilde çalışır. Bir görüntü için kullanılan veri miktarının azaltılmasının duyarlı sunum için önemli olduğu web kullanımında, JPEG'in sıkıştırma avantajları JPEG'i popüler hale getirmektedir. JPEG/Exif aynı zamanda dijital kameralar tarafından kaydedilen en yaygın formattır.

Ancak JPEG, bitişik pikseller arasındaki keskin kontrastların fark edilebilir yapaylıklara neden olabileceği çizgi çizimler ve diğer metinsel veya simgesel grafikler için pek uygun değildir. Bu tür görüntüler TIFF, GIF, PNG gibi kayıpsız bir grafik formatında veya ham görüntü formatında daha iyi kaydedilir. JPEG standardı kayıpsız bir kodlama modu içerir, ancak bu mod çoğu üründe desteklenmez.

JPEG'in tipik kullanımı, görüntü doğruluğunu azaltan kayıplı bir sıkıştırma yöntemi olduğundan, görüntüleme verilerinin tam olarak yeniden üretilmesi için uygun değildir (bazı bilimsel ve tıbbi görüntüleme uygulamaları ve bazı teknik görüntü işleme çalışmaları gibi).

JPEG aynı zamanda birden fazla düzenlemeye tabi tutulacak dosyalar için de uygun değildir, çünkü görüntü her yeniden sıkıştırıldığında, özellikle de görüntü kırpıldığında veya kaydırıldığında ya da kodlama parametreleri değiştirildiğinde bir miktar görüntü kalitesi kaybedilir - ayrıntılar için dijital nesil kaybı bölümüne bakın. Sıralı ve tekrarlayan düzenleme sırasında görüntü bilgisi kaybını önlemek için, ilk düzenleme kayıpsız bir formatta kaydedilebilir, daha sonra bu formatta düzenlenebilir ve son olarak dağıtım için JPEG olarak yayınlanabilir.

JPEG sıkıştırma

JPEG, ayrık kosinüs dönüşümüne (DCT) dayalı kayıplı bir sıkıştırma biçimi kullanır. Bu matematiksel işlem, video kaynağının her bir karesini/alanını uzamsal (2D) alandan frekans alanına (diğer bir deyişle dönüşüm alanına) dönüştürür. İnsan psikovizüel sistemine gevşek bir şekilde dayanan algısal bir model, yüksek frekanslı bilgileri, yani yoğunluktaki keskin geçişleri ve renk tonunu atar. Dönüşüm alanında, bilgiyi azaltma işlemine niceleme denir. Daha basit bir ifadeyle, niceleme, büyük bir sayı ölçeğini (her sayının farklı oluşumlarıyla) daha küçük bir ölçeğe en uygun şekilde indirgeme yöntemidir ve dönüşüm alanı görüntünün uygun bir temsilidir çünkü genel resme diğer katsayılardan daha az katkıda bulunan yüksek frekanslı katsayılar, karakteristik olarak yüksek sıkıştırılabilirliğe sahip küçük değerlerdir. Nicelenmiş katsayılar daha sonra sıralanır ve çıkış bit akışına kayıpsız olarak paketlenir. JPEG'in neredeyse tüm yazılım uygulamaları sıkıştırma oranı (ve diğer isteğe bağlı parametreler) üzerinde kullanıcı kontrolüne izin vererek kullanıcının daha küçük dosya boyutu için resim kalitesinden ödün vermesini sağlar. Gömülü uygulamalarda (benzer bir DCT sıkıştırma şeması kullanan miniDV gibi), parametreler uygulama için önceden seçilir ve sabitlenir.

Sıkıştırma yöntemi genellikle kayıplıdır, yani bazı orijinal görüntü bilgileri kaybolur ve geri yüklenemez, bu da muhtemelen görüntü kalitesini etkiler. JPEG standardında tanımlanan isteğe bağlı bir kayıpsız mod vardır. Ancak bu mod ürünlerde yaygın olarak desteklenmemektedir.

Ayrıca, verilerin giderek daha yüksek ayrıntıya sahip birden fazla geçişte sıkıştırıldığı taramalı aşamalı bir JPEG formatı da vardır. Bu, yavaş bir bağlantı üzerinden indirilirken görüntülenecek büyük görüntüler için idealdir ve verilerin yalnızca bir kısmını aldıktan sonra makul bir önizlemeye izin verir. Ancak, aşamalı JPEG'ler için destek evrensel değildir. Aşamalı JPEG'ler bunları desteklemeyen programlar tarafından alındığında (Internet Explorer'ın Windows 7'den önceki sürümleri gibi) yazılım görüntüyü ancak tamamen indirildikten sonra görüntüler.

Hem gri tonlamalı hem de renkli 12 bit JPEG görüntüleri oluşturan ve işleyen birçok tıbbi görüntüleme, trafik ve kamera uygulaması da vardır. 12 bit JPEG formatı, JPEG spesifikasyonunun Genişletilmiş bir bölümüne dahil edilmiştir. Libjpeg codec bileşeni 12-bit JPEG'i destekler ve hatta yüksek performanslı bir sürümü de mevcuttur.

Kayıpsız düzenleme

Görüntü boyutu 1 MCU bloğunun (Minimum Kodlanmış Birim) katları olduğu sürece (4:2:0 kroma alt örneklemesi için genellikle her iki yönde 16 piksel) JPEG görüntüsünde çeşitli değişiklikler kayıpsız olarak (yani yeniden sıkıştırma ve buna bağlı kalite kaybı olmadan) gerçekleştirilebilir. Bunu uygulayan yardımcı programlar şunları içerir:

  • jpegtran ve GUI'si, Jpegcrop.
  • JPG_TRANSFORM eklentisini yüklemeyi gerektiren "JPG Lossless Crop (PlugIn)" ve "JPG Lossless Rotation (PlugIn)" kullanan IrfanView.
  • "Dosyaya Kayıpsız Kırpma" ve "JPEG Kayıpsız Döndürme" kullanan FastStone Image Viewer.
  • "JPEG kayıpsız dönüşümleri" kullanan XnViewMP.
  • ACDSee, "Kayıpsız JPEG işlemlerini zorla" seçeneği ile kayıpsız döndürmeyi (ancak kayıpsız kırpmayı değil) destekler.

Bloklar 90 derecelik artışlarla döndürülebilir, yatay, dikey ve diyagonal eksenlerde çevrilebilir ve görüntü içinde hareket ettirilebilir. Orijinal görüntüdeki tüm blokların değiştirilmiş görüntüde kullanılması gerekmez.

Bir JPEG görüntüsünün üst ve sol kenarı 8 × 8 piksel blok sınırı üzerinde olmalıdır, ancak alt ve sağ kenarın bunu yapması gerekmez. Bu, olası kayıpsız kırpma işlemlerini sınırlar ve ayrıca alt veya sağ kenarı tüm kanallar için bir blok sınırı üzerinde olmayan bir görüntünün çevrilmesini ve döndürülmesini önler (çünkü kenar, yukarıda belirtildiği gibi bir blok sınırının zorunlu olduğu üst veya solda olur).

Görüntünün 8 veya 16'nın katı olmadığı (bu değer kroma alt örneklemesine bağlıdır) döndürmeler kayıpsız değildir. Böyle bir görüntünün döndürülmesi blokların yeniden hesaplanmasına neden olur ve bu da kalite kaybına yol açar.

Kayıpsız kırpma kullanılırken, kırpma bölgesinin alt veya sağ tarafı bir blok sınırında değilse, kısmen kullanılan bloklardan gelen verilerin geri kalanı kırpılmış dosyada hala mevcut olacaktır ve kurtarılabilir. Tek fark katsayıların dosyaya yerleştirilme sırası olduğundan, herhangi bir kalite kaybı olmadan taban çizgisi ve aşamalı formatlar arasında dönüşüm yapmak da mümkündür.

Ayrıca, aynı kalitede kaydedildikleri ve kenarları blok sınırlarıyla çakıştığı sürece birkaç JPEG görüntüsü kayıpsız olarak birleştirilebilir.

JPEG dosyaları

"JPEG Değişim Formatı" (JIF) olarak bilinen dosya formatı standardın Ek B'sinde belirtilmiştir. Ancak bu "saf" dosya formatı, öncelikle standardın tüm yönlerini tam olarak uygulayan kodlayıcıları ve kod çözücüleri programlamanın zorluğu ve standardın bazı eksiklikleri nedeniyle nadiren kullanılır:

  • Renk alanı tanımı
  • Bileşen alt örnekleme kaydı
  • Piksel en boy oranı tanımı.

Bu sorunları ele almak için birkaç ek standart geliştirilmiştir. Bunlardan ilki 1992 yılında yayınlanan JPEG Dosya Değişim Formatı (veya JFIF) olup, bunu son yıllarda Değiştirilebilir görüntü dosyası formatı (Exif) ve ICC renk profilleri izlemiştir. Bu formatların her ikisi de farklı işaretleyicilerden oluşan gerçek JIF bayt düzenini kullanır, ancak buna ek olarak JIF standardının uzantı noktalarından birini, yani uygulama işaretleyicilerini kullanır: JFIF APP0 kullanırken Exif APP1 kullanır. JIF standardında ileride kullanılmak üzere bırakılan ve onun tarafından okunmayan dosyanın bu bölümlerine bu standartlar özel meta veriler ekler.

Bu nedenle, JFIF bazı yönlerden JIF standardının belirli kısıtlamaları (tüm farklı kodlama modlarına izin vermemek gibi) belirten kısaltılmış bir versiyonu iken, diğer yönlerden eklenen meta veriler nedeniyle JIF'in bir uzantısıdır. Orijinal JFIF standardının belgelerinde şu ifadeler yer almaktadır:

JPEG Dosya Değişim Formatı, JPEG bit akışlarının çok çeşitli platformlar ve uygulamalar arasında değiş tokuş edilmesini sağlayan minimal bir dosya formatıdır. Bu minimal format, TIFF JPEG spesifikasyonunda veya herhangi bir uygulamaya özel dosya formatında bulunan gelişmiş özelliklerin hiçbirini içermez. Bu basitleştirilmiş formatın tek amacı JPEG sıkıştırılmış görüntülerin değişimine izin vermek olduğu için de içermemelidir.

JPEG sıkıştırması kullanan görüntü dosyaları genellikle "JPEG dosyaları" olarak adlandırılır ve JIF görüntü formatının varyantlarında saklanır. JPEG çıktısı veren çoğu görüntü yakalama cihazı (dijital kameralar gibi) aslında kamera endüstrisinin meta veri değişimi için standartlaştırdığı Exif formatında dosyalar oluşturmaktadır. Öte yandan, Exif standardı renk profillerine izin vermediğinden, çoğu görüntü düzenleme yazılımı JPEG'i JFIF formatında depolar ve meta verileri neredeyse uyumlu bir şekilde dahil etmek için Exif dosyasından APP1 segmentini de içerir; JFIF standardı biraz esnek bir şekilde yorumlanır.

Açıkçası, JFIF ve Exif standartları uyumsuzdur, çünkü her biri kendi işaretleyici segmentinin (sırasıyla APP0 veya APP1) önce görünmesini belirtir. Pratikte, çoğu JPEG dosyası Exif başlığından önce gelen bir JFIF işaretleyici segmenti içerir. Bu, eski okuyucuların eski format JFIF segmentini doğru bir şekilde işlemesine olanak sağlarken, yeni okuyucular da önce görünmesini gerektirme konusunda daha az katı olan aşağıdaki Exif segmentinin kodunu çözer.

JPEG dosya adı uzantıları

JPEG sıkıştırması kullanan dosyalar için en yaygın dosya adı uzantıları .jpg ve .jpeg'dir, ancak .jpe, .jfif ve .jif de kullanılır. JPEG verilerinin diğer dosya türlerine gömülmesi de mümkündür - TIFF kodlu dosyalar genellikle ana görüntünün küçük resmi olarak bir JPEG görüntüsü içerir; ve MP3 dosyaları ID3v2 etiketinde kapak resminin bir JPEG'ini içerebilir.

Renk profili

Birçok JPEG dosyası bir ICC renk profili (renk uzayı) içerir. Yaygın olarak kullanılan renk profilleri arasında sRGB ve Adobe RGB bulunur. Bu renk uzayları doğrusal olmayan bir dönüşüm kullandığından, 8 bitlik bir JPEG dosyasının dinamik aralığı yaklaşık 11 duraktır; gama eğrisine bakın.

Görüntü renk profili bilgisi belirtmezse (etiketsiz), web sayfalarında görüntüleme amacıyla renk uzayının sRGB olduğu varsayılır.

Sözdizimi ve yapı

Bir JPEG görüntüsü, her biri 0xFF baytıyla başlayan ve ardından ne tür bir işaretleyici olduğunu belirten bir baytla devam eden bir işaretleyiciyle başlayan bir dizi segmentten oluşur. Bazı işaretleyiciler sadece bu iki bayttan oluşur; diğerlerinin ardından işaretleyiciye özgü yük verisinin uzunluğunu gösteren iki bayt (önce yüksek sonra düşük) gelir. (Uzunluk, uzunluk için iki baytı içerir, ancak işaretleyici için iki baytı içermez). Bazı işaretleyicileri entropi kodlu veriler takip eder; böyle bir işaretleyicinin uzunluğu entropi kodlu verileri içermez. Ardışık 0xFF baytlarının dolgu amacıyla dolgu baytları olarak kullanıldığını unutmayın, ancak bu dolgu baytı dolgusu yalnızca entropi kodlu tarama verilerinin hemen ardından gelen işaretleyiciler için gerçekleşmelidir (ayrıntılar için JPEG belirtimi bölüm B.1.1.2 ve E.1.2'ye bakın; özellikle "İşaretleyicilerin sıkıştırılmış verilerden sonra eklendiği tüm durumlarda, isteğe bağlı 0xFF dolgu baytları işaretleyiciden önce gelebilir").

Entropi kodlu veri içinde, herhangi bir 0xFF baytından sonra, kodlayıcı tarafından bir sonraki bayttan önce bir 0x00 baytı eklenir, böylece amaçlanmadığı halde bir işaretleyici varmış gibi görünmez ve çerçeveleme hataları önlenir. Kod çözücüler bu 0x00 baytını atlamalıdır. Bayt doldurma olarak adlandırılan bu teknik (bkz. JPEG belirtimi bölüm F.1.2.3), işaretleyici yük verilerine değil, yalnızca entropi kodlu verilere uygulanır. Ancak entropi kodlu verinin kendine ait birkaç işaretleyicisi olduğunu unutmayın; özellikle Sıfırlama işaretleyicileri (0xD0 ila 0xD7), paralel kod çözmeye izin vermek için bağımsız entropi kodlu veri parçalarını izole etmek için kullanılır ve kodlayıcılar bu Sıfırlama işaretleyicilerini düzenli aralıklarla eklemekte serbesttir (ancak tüm kodlayıcılar bunu yapmaz).

Yaygın JPEG işaretleyicileri
Kısa isim Bayt Yük İsim Yorumlar
SOI 0xFF, 0xD8 Hiçbiri Resmin Başlangıcı
SOF0 0xFF, 0xC0 değişken boyut Çerçeve Başlangıcı (temel DCT) Bunun temel DCT tabanlı bir JPEG olduğunu belirtir ve genişliği, yüksekliği, bileşen sayısını ve bileşen alt örneklemesini (örn. 4:2:0) belirtir.
SOF2 0xFF, 0xC2 değişken boyut Çerçeve Başlangıcı (aşamalı DCT) Bunun aşamalı DCT tabanlı bir JPEG olduğunu belirtir ve genişliği, yüksekliği, bileşen sayısını ve bileşen alt örneklemesini (örn. 4:2:0) belirtir.
DHT 0xFF, 0xC4 değişken boyut Huffman Tablo(ları)nı Tanımlama Bir veya daha fazla Huffman tablosu belirtir.
DQT 0xFF, 0xDB değişken boyut Niceleme Tablo(ları)nı Tanımlama Bir veya daha fazla niceleme tablosu belirtir.
DRI 0xFF, 0xDD 4 bayt Yeniden Başlatma Aralığını Tanımlama Minimum Kodlanmış Birim (MCU) cinsinden RSTn işaretleyicileri arasındaki aralığı belirtir. Bu işaretleyiciyi sabit boyutu belirten iki bayt takip eder, böylece diğer değişken boyutlu segmentler gibi ele alınabilir.
SOS 0xFF, 0xDA değişken boyut Tarama Başlangıcı Görüntünün yukarıdan aşağıya taranmasını başlatır. Temel DCT JPEG görüntülerinde genellikle tek bir tarama vardır. Aşamalı DCT JPEG görüntüleri genellikle birden fazla tarama içerir. Bu işaretleyici hangi veri dilimini içereceğini belirtir ve hemen ardından entropi kodlu veri gelir.
RSTn 0xFF, 0xDn (n=0..7) Hiçbiri Yeniden başlat Her r makroblokta bir eklenir, burada r bir DRI işaretleyicisi tarafından belirlenen yeniden başlatma aralığıdır. DRI işaretleyicisi yoksa kullanılmaz. İşaretleyici kodunun düşük üç biti 0 ila 7 arasında değer alır.
APPn 0xFF, 0xEn değişken boyut Uygulamaya özel Örneğin, bir Exif JPEG dosyası meta verileri depolamak için TIFF'e yakın bir yapıda düzenlenmiş bir APP1 işaretleyicisi kullanır.
COM 0xFF, 0xFE değişken boyut Yorum Bir metin yorumu içerir.
EOI 0xFF, 0xD9 Hiçbiri Resmin Sonu

Diğer JPEG kodlama türlerini tanıtan başka Çerçeve Başı işaretleyicileri de vardır.

Birkaç satıcı aynı APPn işaretleyici türünü kullanabileceğinden, uygulamaya özel işaretleyiciler genellikle bir standart veya satıcı adıyla (örneğin, "Exif" veya "Adobe") veya başka bir tanımlayıcı dizeyle başlar.

Bir yeniden başlatma işaretleyicisinde, bloktan bloğa tahmin edici değişkenler sıfırlanır ve bit akışı bir bayt sınırına senkronize edilir. Yeniden başlatma işaretleyicileri, güvenilir olmayan bir ağ üzerinden iletim veya dosya bozulması gibi bit akışı hatalarından sonra kurtarma için araçlar sağlar. Yeniden başlatma işaretleyicileri arasındaki makrobloklar bağımsız olarak çözülebildiğinden, bu çalışmalar paralel olarak çözülebilir.

JPEG codec örneği

Bir JPEG dosyası çeşitli şekillerde kodlanabilmesine rağmen, en yaygın olarak JFIF kodlaması ile yapılır. Kodlama işlemi birkaç adımdan oluşur:

  1. Görüntüdeki renklerin temsili RGB'den, parlaklığı temsil eden bir luma bileşeninden (Y') ve rengi temsil eden iki kroma bileşeninden (CB ve CR) oluşan Y′CBCR'ye dönüştürülür. Bu adım bazen atlanır.
  2. Kroma verilerinin çözünürlüğü genellikle 2 veya 3 kat azaltılır. Bu, gözün ince renk ayrıntılarına ince parlaklık ayrıntılarından daha az duyarlı olduğu gerçeğini yansıtır.
  3. Görüntü 8×8 piksellik bloklara bölünür ve her blok için Y, CB ve CR verilerinin her biri ayrık kosinüs dönüşümüne (DCT) tabi tutulur. DCT, bir tür uzamsal frekans spektrumu üretmesi açısından Fourier dönüşümüne benzer.
  4. Frekans bileşenlerinin genlikleri kuantize edilir. İnsan görüşü, geniş alanlardaki renk veya parlaklıktaki küçük değişimlere, yüksek frekanslı parlaklık değişimlerinin gücünden çok daha duyarlıdır. Bu nedenle, yüksek frekanslı bileşenlerin büyüklükleri düşük frekanslı bileşenlerden daha düşük bir doğrulukla saklanır. Kodlayıcının kalite ayarı (örneğin Bağımsız JPEG Grubu kitaplığındaki 0-100 ölçeğinde 50 veya 95) her bir frekans bileşeninin çözünürlüğünün ne ölçüde azaltılacağını etkiler. Aşırı düşük bir kalite ayarı kullanılırsa, yüksek frekanslı bileşenler tamamen atılır.
  5. Tüm 8×8 bloklar için elde edilen veriler, Huffman kodlamasının bir çeşidi olan kayıpsız bir algoritma ile daha da sıkıştırılır.

Kod çözme işlemi, geri döndürülemez olduğu için niceleme hariç bu adımları tersine çevirir. Bu bölümün geri kalanında, kodlama ve kod çözme süreçleri daha ayrıntılı olarak açıklanmaktadır.

Kodlama

JPEG standardındaki seçeneklerin çoğu yaygın olarak kullanılmaz ve yukarıda da belirtildiği gibi, çoğu görüntü yazılımı JPEG dosyası oluştururken diğer şeylerin yanı sıra kodlama yöntemini de belirten daha basit JFIF formatını kullanır. Burada, piksel başına 24 bit (kırmızı, yeşil ve mavinin her biri sekiz) olan bir girdiye uygulandığında en yaygın kodlama yöntemlerinden birinin kısa bir açıklaması bulunmaktadır. Bu özel seçenek kayıplı bir veri sıkıştırma yöntemidir.

Renk uzayı dönüşümü

İlk olarak, görüntü RGB'den (varsayılan olarak sRGB, ancak diğer renk uzayları da mümkündür) Y′CBCR (veya gayri resmi olarak YCbCr) adı verilen farklı bir renk uzayına dönüştürülmelidir. Y', CB ve CR olmak üzere üç bileşeni vardır: Y' bileşeni bir pikselin parlaklığını, CB ve CR bileşenleri ise krominansı (mavi ve kırmızı bileşenlere ayrılmış) temsil eder. Bu, temelde dijital renkli televizyonun yanı sıra video DVD'ler de dahil olmak üzere dijital video tarafından kullanılan renk alanıyla aynıdır. Y′CBCR renk uzayı dönüşümü, algısal görüntü kalitesi üzerinde önemli bir etkisi olmadan daha fazla sıkıştırma sağlar (veya aynı sıkıştırma için daha yüksek algısal görüntü kalitesi). Görüntünün nihai algısal kalitesi için daha önemli olan parlaklık bilgisi tek bir kanalla sınırlandırıldığı için sıkıştırma daha verimlidir. Bu, insan görsel sistemindeki renk algısına daha yakından karşılık gelir. Renk dönüşümü ayrıca istatistiksel dekorelasyon yoluyla sıkıştırmayı da iyileştirir.

Y′CBCR'ye özel bir dönüşüm JFIF standardında belirtilmiştir ve elde edilen JPEG dosyasının maksimum uyumluluğa sahip olması için gerçekleştirilmelidir. Ancak, "en yüksek kalite" modundaki bazı JPEG uygulamaları bu adımı uygulamaz ve bunun yerine renk bilgilerini görüntünün kırmızı, yeşil ve mavi parlaklık bileşenleri için ayrı kanallarda depolandığı RGB renk modelinde tutar. Bu, daha az verimli sıkıştırma ile sonuçlanır ve dosya boyutu özellikle önemli olduğunda muhtemelen kullanılmaz.

Alt örnekleme

İnsan gözündeki renk ve parlaklığa duyarlı reseptörlerin yoğunlukları nedeniyle, insanlar bir görüntünün parlaklığında (Y' bileşeni), bir görüntünün renk tonu ve renk doygunluğundan (Cb ve Cr bileşenleri) çok daha fazla ince ayrıntı görebilir. Bu bilgi kullanılarak, kodlayıcılar görüntüleri daha verimli bir şekilde sıkıştırmak için tasarlanabilir.

Y′CBCR renk modeline dönüşüm, Cb ve Cr bileşenlerinin uzamsal çözünürlüğünü azaltmak ("aşağı örnekleme" veya "kroma alt örnekleme" olarak adlandırılır) olan bir sonraki olağan adımı mümkün kılar. JPEG görüntüleri için aşağı örneklemenin normalde yapıldığı oranlar 4:4:4 (aşağı örnekleme yok), 4:2:2 (yatay yönde 2 kat azaltma) veya (en yaygın olarak) 4:2:0'dır (hem yatay hem de dikey yönde 2 kat azaltma). Sıkıştırma işleminin geri kalanında Y', Cb ve Cr ayrı ayrı ve çok benzer bir şekilde işlenir.

Blok bölme

Alt örneklemeden sonra her kanal 8×8 bloklara bölünmelidir. Kroma alt örneklemesine bağlı olarak bu, 8×8 (4:4:4 - alt örnekleme yok), 16×8 (4:2:2) veya en yaygın olarak 16×16 (4:2:0) boyutunda Minimum Kodlanmış Birim (MCU) blokları verir. Video sıkıştırmada MCU'lar makroblok olarak adlandırılır.

Bir kanal için veriler tam sayı blokları temsil etmiyorsa, kodlayıcı tamamlanmamış blokların kalan alanını bir tür sahte veri ile doldurmalıdır. Kenarları sabit bir renkle (örneğin siyah) doldurmak, sınırın görünen kısmı boyunca çınlama artefaktları oluşturabilir; Kenar piksellerini tekrarlamak, bu tür yapaylıkları azaltan (ancak mutlaka ortadan kaldırmayan) yaygın bir tekniktir ve daha sofistike sınır doldurma teknikleri de uygulanabilir.

Ayrık kosinüs dönüşümü

8 bit gri tonlamalı olarak gösterilen 8×8 alt görüntü

Daha sonra, her bir bileşenin (Y, Cb, Cr) her bir 8×8 bloğu, normalleştirilmiş, iki boyutlu tip-II ayrık kosinüs dönüşümü (DCT) kullanılarak bir frekans alanı temsiline dönüştürülür, bkz. DCT bazen ayrık kosinüs dönüşümünde olduğu gibi bir dönüşüm ailesi bağlamında "tip-II DCT" olarak adlandırılır ve karşılık gelen tersi (IDCT) "tip-III DCT" olarak gösterilir.

Örnek olarak, böyle bir 8×8 8-bit alt görüntü olabilir:

8×8 bloğun DCT'sini hesaplamadan önce, değerleri pozitif bir aralıktan sıfır merkezli bir aralığa kaydırılır. 8 bitlik bir görüntü için, orijinal bloktaki her giriş şu aralığa düşer . Aralığın orta noktası (bu durumda 128 değeri) her girişten çıkarılarak sıfır merkezli bir veri aralığı elde edilir, böylece değiştirilmiş aralık . Bu adım, takip eden DCT işleme aşamasındaki dinamik aralık gereksinimlerini azaltır.

Bu adım aşağıdaki değerlerle sonuçlanır:

DCT, 8×8'lik bir giriş değerleri bloğunu bu 64 desenin doğrusal bir kombinasyonuna dönüştürür. Desenler iki boyutlu DCT temel fonksiyonları olarak adlandırılır ve çıkış değerleri dönüşüm katsayıları olarak adlandırılır. Yatay indeks şöyledir ve dikey indeks ise .

Bir sonraki adım, aşağıdaki gibi verilen iki boyutlu DCT'yi almaktır:

burada

  • yatay uzaysal frekanstır, tam sayılar için .
  • dikey uzaysal frekanstır, tamsayılar için .
  • dönüşümü ortonormal hale getirmek için normalleştirici bir ölçek faktörüdür
  • koordinatlarındaki piksel değeridir
  • koordinatlarındaki DCT katsayısıdır.

Bu dönüşümü yukarıdaki matrisimiz üzerinde gerçekleştirirsek, aşağıdakini elde ederiz (ondalık noktasının ötesinde en yakın iki basamağa yuvarlanır):

Sol üst köşedeki oldukça büyük büyüklüğe sahip girdiye dikkat edin. Bu, tüm blok için temel tonu tanımlayan DC katsayısıdır (sabit bileşen olarak da adlandırılır). Geri kalan 63 katsayı AC katsayılarıdır (alternatif bileşenler olarak da adlandırılır). DCT'nin avantajı, yukarıda görülebileceği gibi, sinyalin çoğunu sonucun bir köşesinde toplama eğilimidir. Bunu takip eden niceleme adımı bu etkiyi vurgularken aynı zamanda DCT katsayılarının toplam boyutunu azaltarak entropi aşamasında verimli bir şekilde sıkıştırılması kolay bir sinyal elde edilmesini sağlar.

DCT, verilerin bit derinliğini geçici olarak artırır, çünkü 8 bitlik/bileşenli bir görüntünün DCT katsayılarının depolanması 11 veya daha fazla bit (DCT hesaplamasının doğruluğuna bağlı olarak) alır. Bu durum kod çözücüyü bu katsayıları tutmak için geçici olarak 16 bitlik sayılar kullanmaya zorlayabilir ve bu noktada görüntü temsilinin boyutu iki katına çıkar; bu değerler genellikle niceleme adımıyla 8 bitlik değerlere indirgenir. Bu aşamada boyutun geçici olarak artması çoğu JPEG uygulaması için bir performans sorunu değildir, çünkü genellikle görüntü kodlama veya kod çözme işlemi sırasında herhangi bir zamanda görüntünün yalnızca çok küçük bir kısmı tam DCT biçiminde saklanır.

Niceleme

İnsan gözü nispeten geniş bir alanda parlaklıktaki küçük farklılıkları görmekte iyidir, ancak yüksek frekanslı parlaklık değişiminin tam gücünü ayırt etmekte o kadar iyi değildir. Bu, yüksek frekanslı bileşenlerdeki bilgi miktarını büyük ölçüde azaltmaya olanak tanır. Bu, frekans alanındaki her bir bileşenin o bileşen için bir sabite bölünmesi ve ardından en yakın tam sayıya yuvarlanmasıyla yapılır. Bu yuvarlama işlemi, DCT hesaplaması yeterince yüksek hassasiyetle gerçekleştirilirse tüm süreçteki (kroma alt örnekleme dışında) tek kayıplı işlemdir. Bunun sonucunda, tipik olarak yüksek frekanslı bileşenlerin çoğu sıfıra yuvarlanır ve geri kalanların çoğu, temsil etmek için çok daha az bit alan küçük pozitif veya negatif sayılar haline gelir.

Niceleme matrisindeki elemanlar sıkıştırma oranını kontrol eder, daha büyük değerler daha fazla sıkıştırma üretir. Tipik bir niceleme matrisi (orijinal JPEG Standardında belirtildiği gibi %50 kalite için) aşağıdaki gibidir:

Nicelenmiş DCT katsayıları şu şekilde hesaplanır

burada kuantize edilmemiş DCT katsayılarıdır; yukarıdaki niceleme matrisidir; ve kuantalanmış DCT katsayılarıdır.

Bu niceleme matrisini yukarıdaki DCT katsayı matrisi ile kullanmak şu sonuçları verir:

Dosya:İdct-animation.gif
Sol: bir dizi temel fonksiyondan nihai bir görüntü oluşturulur. Sağ: görüntüyü oluşturan DCT temel fonksiyonlarının her biri ve karşılık gelen ağırlık katsayısı. Orta: katsayı ile çarpıldıktan sonra temel fonksiyon: bu bileşen nihai görüntüye eklenir. Netlik için, bu örnekteki 8×8 makroblok bilineer enterpolasyon kullanılarak 10x büyütülmüştür.

Örneğin, -415 (DC katsayısı) kullanılarak ve en yakın tam sayıya yuvarlanarak

Alt bloğun yüksek frekanslı öğelerinin çoğunun (yani, x veya y uzamsal frekansı 4'ten büyük olanların) sıfır değerlerine kuantize edildiğine dikkat edin.

Entropi kodlaması

JPEG görüntü bileşenlerinin zikzak sıralaması

Entropi kodlama, kayıpsız veri sıkıştırmanın özel bir şeklidir. Görüntü bileşenlerinin benzer frekansları bir arada gruplayan çalışma uzunluğu kodlama (RLE) algoritması kullanılarak "zikzak" düzeninde düzenlenmesini, uzunluk kodlama sıfırlarının eklenmesini ve ardından geriye kalanlar üzerinde Huffman kodlamasının kullanılmasını içerir.

JPEG standardı ayrıca kod çözücülerin matematiksel olarak Huffman kodlamasından daha üstün olan aritmetik kodlama kullanımını desteklemesine izin verir, ancak bunu gerektirmez. Ancak bu özellik, geçmişte telif hakkı gerektiren lisanslar gerektiren patentler kapsamında olduğundan ve Huffman kodlamasına kıyasla kodlama ve kod çözme daha yavaş olduğundan nadiren kullanılmıştır. Aritmetik kodlama tipik olarak dosyaları yaklaşık %5-7 daha küçük hale getirir.

Önceki nicelenmiş DC katsayısı, mevcut nicelenmiş DC katsayısını tahmin etmek için kullanılır. Gerçek değer yerine ikisi arasındaki fark kodlanır. Nicelenmiş 63 AC katsayısının kodlanmasında böyle bir tahmin farkı kullanılmaz.

Yukarıdaki nicemlenmiş katsayılar için zikzak dizisi aşağıda gösterilmiştir. (Gösterilen format sadece anlama/görüntüleme kolaylığı içindir).

-26
-3 0
-3 -2 -6
2 -4 1 -3
1 1 5 1 2
-1 1 -1 2 0 0
0 0 0 -1 -1 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0
0 0 0 0
0 0 0
0 0
0

Eğer i'inci blok şu şekilde temsil ediliyorsa ve her blok içindeki pozisyonlar şu şekilde temsil edilir burada ve sonra DCT görüntüsündeki herhangi bir katsayı şu şekilde gösterilebilir . Böylece, yukarıdaki şemada, piksellerin kodlanma sırası (i-inci blok için) şöyledir , , , , , , , ve benzeri.

Temel sıralı JPEG kodlama ve kod çözme işlemleri

Bu kodlama moduna taban çizgisi sıralı kodlama denir. Temel JPEG ayrıca aşamalı kodlamayı da destekler. Sıralı kodlama her seferinde tek bir bloğun katsayılarını kodlarken (zikzaklı bir şekilde), aşamalı kodlama tek seferde (tarama olarak adlandırılır) tüm blokların benzer konumdaki katsayı gruplarını kodlar, ardından tüm blokların katsayılarının bir sonraki grubu gelir ve bu böyle devam eder. Örneğin, görüntü N adet 8×8 bloğa bölünmüşse ardından 3 taramalı aşamalı kodlama DC bileşenini kodlar, tüm bloklar için, yani tüm ilk taramada. Bunu, birkaç bileşeni daha kodlayan ikinci tarama izler (dört bileşen daha olduğunu varsayarsak, bunlar için hala zikzak bir şekilde) tüm blokların katsayıları (yani sıra: ), ardından son taramada tüm blokların kalan tüm katsayıları.

Tüm benzer konumlu katsayılar kodlandıktan sonra, kodlanacak bir sonraki konum, yukarıdaki şekilde gösterildiği gibi zikzak geçişinde bir sonraki sırada yer alan konumdur. Aradaki fark çok büyük olmasa da, her bir "tarama" veya "geçiş "te (benzer konumlu katsayıları içeren) farklı frekanslar için uyarlanmış farklı Huffman tabloları (aşağıya bakınız) kullanma yeteneği nedeniyle temel aşamalı JPEG kodlamasının genellikle temel sıralı JPEG'e kıyasla daha iyi sıkıştırma sağladığı bulunmuştur.

Makalenin geri kalanında, üretilen katsayı modelinin sıralı moddan kaynaklandığı varsayılmaktadır.

Yukarıda oluşturulan katsayı desenini kodlamak için JPEG Huffman kodlamasını kullanır. JPEG standardı genel amaçlı Huffman tabloları sağlar; kodlayıcılar ayrıca kodlanan görüntülerdeki gerçek frekans dağılımları için optimize edilmiş Huffman tabloları oluşturmayı da seçebilirler.

Zig-zag nicemlenmiş verileri kodlama işlemi aşağıda açıklanan bir çalışma uzunluğu kodlamasıyla başlar, burada:

  • x sıfır olmayan, kuantize edilmiş AC katsayısıdır.
  • RUNLENGTH, bu sıfır olmayan AC katsayısından önce gelen sıfırların sayısıdır.
  • SIZE, x'i temsil etmek için gereken bit sayısıdır.
  • AMPLITUDE, x'in bit temsilidir.

Çalışma uzunluğu kodlaması, her sıfır olmayan AC katsayısı x'i inceleyerek ve önceki AC katsayısından önce kaç sıfır geldiğini belirleyerek çalışır. Bu bilgi ile iki sembol oluşturulur:

Sembol 1 Sembol 2
(ÇALIŞMA UZUNLUĞU, BOYUT) (GENLIK)

Hem RUNLENGTH hem de SIZE aynı bayta dayanır, yani her biri yalnızca dört bit bilgi içerir. Üst bitler sıfırların sayısıyla ilgiliyken, alt bitler x değerini kodlamak için gerekli bit sayısını belirtir.

Bu, Sembol 1'in yalnızca sıfır olmayan AC katsayısından önceki ilk 15 sıfıra ilişkin bilgileri saklayabileceği anlamına gelir. Ancak JPEG iki özel Huffman kod sözcüğü tanımlar. Bunlardan biri, kalan katsayılar sıfır olduğunda ("Blok Sonu" veya "EOB" olarak adlandırılır) diziyi zamanından önce sonlandırmak için, diğeri ise sıfır olmayan bir AC katsayısına ulaşmadan önce sıfırlar dizisi 15'i aştığında kullanılır. Belirli bir sıfır olmayan AC katsayısından önce 16 sıfırla karşılaşıldığı böyle bir durumda, Sembol 1 "özel olarak" şu şekilde kodlanır: (15, 0)(0).

Tüm süreç (0, 0) ile gösterilen "EOB "ye ulaşılana kadar devam eder.

Bunu akılda tutarak, daha önceki sıra şöyle olur:

(0, 2)(-3);(1, 2)(-3);(0, 1)(-2);(0, 2)(-6);(0, 1)(2);(0, 1)(-4);(0, 1)(1);(0, 2)(-3);(0, 1)(1);(0, 1)(1);
(0, 2)(5);(0, 1)(1);(0, 1)(2);(0, 1)(-1);(0, 1)(1);(0, 1)(-1);(0, 1)(2);(5, 1)(-1);(0, 1)(-1);(0, 0);

(Matristeki ilk değer, -26, DC katsayısıdır; aynı şekilde kodlanmamıştır. Yukarıya bakın).

Buradan itibaren, frekans hesaplamaları katsayıların oluşumlarına göre yapılır. Örnek bloğumuzda, nicelenen katsayıların çoğu, hemen öncesinde bir sıfır katsayısı olmayan küçük sayılardır. Daha sık görülen bu durumlar daha kısa kod sözcükleriyle temsil edilecektir.

Sıkıştırma oranı ve artefaktlar

Bu görüntü, sıkıştırılmamış bir görüntü ile 50 kalite ayarıyla sıkıştırılmış aynı JPEG görüntüsü arasındaki farklı pikselleri gösterir. Daha koyu, daha büyük bir fark anlamına gelir. Özellikle keskin kenarların yakınında meydana gelen ve blok benzeri bir şekle sahip olan değişikliklere dikkat edin.
Orijinal görüntü
Sıkıştırılmış 8×8 kareler, kayıplı sıkıştırmanın diğer görsel artefaktlarıyla birlikte ölçeklendirilmiş resimde görülebilir.

Elde edilen sıkıştırma oranı, niceleme aşamasında kullanılan bölenlerde az ya da çok agresif davranılarak ihtiyaca göre değiştirilebilir. Bire on sıkıştırma genellikle orijinalinden gözle ayırt edilemeyen bir görüntüyle sonuçlanır. Sıkıştırma oranının 100:1 olması genellikle mümkündür, ancak orijinaline kıyasla belirgin bir şekilde yapay görünecektir. Uygun sıkıştırma seviyesi görüntünün hangi amaçla kullanılacağına bağlıdır.

Harici görüntü
image icon Kenar meşguliyetinin gösterimi

World Wide Web'i kullananlar JPEG görüntülerinde görülen ve sıkıştırma artefaktları olarak bilinen düzensizliklere aşina olabilirler; bu düzensizlikler kontrastlı kenarlarda (özellikle eğriler ve köşeler) gürültü veya "bloklu" görüntüler şeklinde olabilir. Bunlar JPEG algoritmasının niceleme adımından kaynaklanmaktadır. Özellikle zıt renkler arasındaki keskin köşelerde fark edilirler (metin bu tür birçok köşe içerdiğinden iyi bir örnektir). MPEG videodaki benzer artefaktlar sivrisinek gürültüsü olarak adlandırılır, çünkü ortaya çıkan "kenar meşguliyeti" ve zamanla değişen sahte noktalar nesnenin etrafında dolanan sivrisinekleri andırır.

Bu artefaktlar daha düşük bir sıkıştırma seviyesi seçilerek azaltılabilir; bir görüntüyü kayıpsız bir dosya formatı kullanarak kaydederek tamamen önlenebilir, ancak bu daha büyük bir dosya boyutuyla sonuçlanacaktır. Işın izleme programları ile oluşturulan görüntülerde arazi üzerinde gözle görülür bloklu şekiller vardır. Görüntüler basitçe izlendiğinde bazı düşük yoğunluklu sıkıştırma artefaktları kabul edilebilir, ancak görüntü daha sonra işlenirse vurgulanabilir ve genellikle kabul edilemez kaliteyle sonuçlanır. Kayıplı sıkıştırmanın bir kenar algılama işleme adımı üzerindeki etkisini gösteren aşağıdaki örneği ele alalım.

Görüntü Kayıpsız sıkıştırma Kayıplı sıkıştırma
Orijinal Lossless-circle.png Lossy-circle.jpg
Tarafından işlendi
Canny kenar dedektörü
Lossless-circle-canny.png Lossy-circle-canny.png

Bazı programlar kullanıcının tek tek blokların sıkıştırılma miktarını değiştirmesine izin verir. Görüntünün daha az artefakt gösteren alanlarına daha güçlü sıkıştırma uygulanır. Bu şekilde JPEG dosya boyutunu daha az kalite kaybıyla manuel olarak küçültmek mümkündür.

Niceleme aşaması her zaman bilgi kaybına neden olduğundan, JPEG standardı her zaman kayıplı bir sıkıştırma kodekidir. (Bilgi hem niceleme hem de kayan noktalı sayıların yuvarlanması sırasında kaybolur). Niceleme matrisi birler matrisi olsa bile, bilgi yuvarlama adımında yine de kaybolacaktır.

Kod çözme

Görüntüyü görüntülemek için kod çözme, yukarıdakilerin tersini yapmaktan oluşur.

DCT katsayı matrisini alarak (DC katsayısının farkını geri ekledikten sonra)

ve yukarıdaki kuantizasyon matrisi ile giriş-giriş çarpımı alındığında

Bu da sol üst kısım için orijinal DCT katsayı matrisine çok benzemektedir.

Bir sonraki adım, iki boyutlu ters DCT'yi (2D tip-III DCT) almaktır, bu da şu şekilde verilir:

burada

  • piksel satırıdır, tam sayılar için .
  • piksel sütunudur, tamsayılar için .
  • tamsayıları için yukarıdaki gibi tanımlanır .
  • koordinatlarında yeniden yapılandırılmış yaklaşık katsayıdır.
  • koordinatlarında yeniden yapılandırılmış piksel değeridir.

Çıktıyı tamsayı değerlere yuvarlamak (orijinal tamsayı değerlere sahip olduğundan), değerleri (hala 128 aşağı kaydırılmış) olan bir görüntü ile sonuçlanır

Orijinal (üstte) ve sıkıştırılmış görüntü (altta) arasında küçük farklar göze çarpmaktadır ve bu farklar en çok sol alt köşede görülmektedir.

ve her bir girdiye 128 ekleyerek

Bu, sıkıştırılmış alt görüntüdür. Genel olarak, dekompresyon işlemi orijinal girdi aralığının dışında değerler üretebilir . Bu durumda kod çözücünün, sıkıştırılmış görüntüyü orijinal bit derinliği ile saklarken taşmayı önlemek için çıkış değerlerini bu aralıkta tutacak şekilde kırpması gerekir.

Açılmış alt görüntü orijinal alt görüntüyle karşılaştırılabilir (ayrıca sağdaki görüntülere bakın) fark (orijinal - sıkıştırılmamış) alınarak aşağıdaki hata değerleriyle sonuçlanır:

piksel başına yaklaşık 5 değerlik bir ortalama mutlak hata ile (örn, ).

Hata en çok sol alt köşede fark edilir; burada sol alt piksel hemen sağındaki pikselden daha koyu hale gelir.

Gerekli hassasiyet

Bir JPEG kodekinin gerekli uygulama hassasiyeti, JPEG standardına uyum için formüle edilen gereksinimler aracılığıyla dolaylı olarak tanımlanır. Bu gereksinimler ITU.T Recommendation T.83 | ISO/IEC 10918-2'de belirtilmiştir. MPEG standartlarından ve daha sonraki birçok JPEG standardından farklı olarak, yukarıdaki belge, referans test akışları tarafından belirlenen DCT alanındaki ileri ve ters DCT'nin maksimum tolere edilebilir hatası aracılığıyla bir JPEG kodekinin kodlama ve kod çözme işlemi için gerekli uygulama hassasiyetlerini tanımlar. Örneğin, bir kod çözücü uygulamasının çıktısı, yukarıdaki standardın bir parçası olarak sağlanan referans test kod akışlarına uygulandığında DCT alanında bir niceleme birimi hatasını aşmamalıdır. ITU.T.83 | ISO/IEC 10918-2, diğer birçok modern standarttan farklı olarak görüntü alanında hata sınırlarını formüle etmez.

JPEG sıkıştırmasının etkileri

JPEG sıkıştırma artefaktları, ayrıntılı tekdüze olmayan dokulara sahip fotoğraflara iyi uyum sağlayarak daha yüksek sıkıştırma oranlarına izin verir. Daha yüksek bir sıkıştırma oranının ilk olarak görüntünün sol üst köşesindeki yüksek frekanslı dokuları nasıl etkilediğine ve kontrast çizgilerin nasıl daha bulanık hale geldiğine dikkat edin. Çok yüksek sıkıştırma oranı görüntünün kalitesini ciddi şekilde etkiler, ancak genel renkler ve görüntü formu hala tanınabilir durumdadır. Bununla birlikte, renklerin hassasiyeti (insan gözü için) konturların hassasiyetinden (parlaklığa dayalı) daha az zarar görür. Bu durum, daha fazla bilgi bitine sahip parlaklık düzleminin hassasiyetini korumak için kromatik düzlemleri alt örneklemeden önce (daha düşük kaliteli niceleme de kullanabilir) görüntülerin ilk olarak parlaklığı kromatik bilgilerden ayıran bir renk modeline dönüştürülmesi gerektiği gerçeğini haklı çıkarmaktadır.

Örnek fotoğraflar

4480x4480 piksellik bir resim üzerinde Photoshop'ta jpeg sıkıştırmanın görsel etkisi

Bilgi için, aşağıdaki sıkıştırılmamış 24 bit RGB bitmap görüntüsü (73.242 piksel) 219.726 bayt gerektirir (diğer tüm bilgi başlıkları hariç). Aşağıda belirtilen dosya boyutları dahili JPEG bilgi başlıklarını ve bazı meta verileri içerir. En yüksek kaliteli görüntüler için (Q=100), renkli piksel başına yaklaşık 8,25 bit gereklidir. Gri tonlamalı görüntülerde piksel başına en az 6,5 bit yeterlidir (karşılaştırılabilir Q=100 kalitesindeki renk bilgisi yaklaşık %25 daha fazla kodlanmış bit gerektirir). Aşağıdaki en yüksek kaliteli görüntü (Q=100) renk pikseli başına dokuz bitle kodlanır, orta kaliteli görüntü (Q=25) renk pikseli başına bir bit kullanır. Çoğu uygulama için kalite faktörü, düşük kaliteli görüntüde gösterildiği gibi piksel başına 0,75 bitin (Q=12,5) altına düşmemelidir. En düşük kalitedeki görüntü piksel başına yalnızca 0,13 bit kullanır ve çok zayıf renk gösterir. Bu, görüntü önemli ölçüde küçültülmüş bir boyutta görüntülenecekse kullanışlıdır. Q faktörü yerine PSNR kullanarak belirli bir görüntü kalitesi için daha iyi niceleme matrisleri oluşturmaya yönelik bir yöntem Minguillón & Pujol (2001)'de açıklanmıştır.

Not: Yukarıdaki görüntüler IEEE / CCIR / EBU test görüntüleri değildir ve kodlayıcı ayarları belirtilmemiştir veya mevcut değildir.
Görüntü Kalite Boyut (bayt) Sıkıştırma oranı ! Yorum
JPEG example JPG RIP 100.jpg En yüksek kalite (Q = 100) 81,447 2.7:1 Son derece küçük artefaktlar
JPEG example JPG RIP 050.jpg Yüksek kalite (Q = 50) 14,679 15:1 Alt görüntü artefaktlarının ilk işaretleri
JPEG example JPG RIP 025.jpg Orta kalite (Q = 25) 9,407 23:1 Daha güçlü artefaktlar; yüksek frekanslı bilgi kaybı
JPEG example JPG RIP 010.jpg Düşük kalite (Q = 10) 4,787 46:1 Şiddetli yüksek frekans kaybı, alt görüntü sınırlarında belirgin yapaylıklara yol açar ("makrobloklama")
JPEG example JPG RIP 001.jpg En düşük kalite (Q = 1) 1,523 144:1 Aşırı renk ve detay kaybı; yapraklar neredeyse tanınmaz halde.

Orta kaliteli fotoğraf, sıkıştırılmamış görüntü için gereken depolama alanının yalnızca %4,3'ünü kullanır, ancak gözle görülür ayrıntı kaybı veya görünür yapaylıklar çok azdır. Ancak, belirli bir sıkıştırma eşiği geçildiğinde, sıkıştırılmış görüntülerde giderek daha fazla görünür kusurlar ortaya çıkar. Bu eşik etkisinin matematiksel açıklaması için hız-bozulma teorisi makalesine bakınız. JPEG'in bu konudaki özel bir sınırlaması, örtüşmeyen 8×8 blok dönüşüm yapısıdır. JPEG 2000 ve JPEG XR gibi daha modern tasarımlar, düşük frekans katsayıları için daha geniş uzamsal kapsama sahip dönüşümler kullanarak ve üst üste binen dönüşüm temel fonksiyonları kullanarak bit kullanımı azaldıkça kalitede daha zarif bir bozulma sergiler.

Kayıpsız daha fazla sıkıştırma

2004'ten 2008'e kadar, temsil edilen görüntüyü değiştirmeden JPEG görüntülerinde bulunan verileri daha fazla sıkıştırmanın yolları üzerine yeni araştırmalar ortaya çıkmıştır. Bu, orijinal görüntünün yalnızca JPEG formatında mevcut olduğu ve arşivleme veya iletim için boyutunun küçültülmesi gereken senaryolarda uygulama alanı bulmaktadır. Standart genel amaçlı sıkıştırma araçları JPEG dosyalarını önemli ölçüde sıkıştıramaz.

Tipik olarak, bu tür şemalar DCT katsayılarını kodlamak için kullanılan naif şemadaki iyileştirmelerden yararlanır ve bu da dikkate alınmaz:

  • Aynı bloktaki bitişik katsayıların büyüklükleri arasındaki korelasyonlar;
  • Bitişik bloklardaki aynı katsayının büyüklükleri arasındaki korelasyonlar;
  • Farklı kanallardaki aynı katsayı/blok büyüklükleri arasındaki korelasyonlar;
  • DC katsayıları birlikte ele alındığında, orijinal görüntünün bir ölçeklendirme faktörü ile çarpılarak küçültülmüş bir versiyonuna benzer. Sürekli tonlu görüntülerin kayıpsız kodlanması için iyi bilinen şemalar uygulanabilir ve JPEG'de kullanılan Huffman kodlu DPCM'den biraz daha iyi sıkıştırma elde edilebilir.

JPEG'de DCT katsayılarının kodlanmasının verimliliğini artırmak için bazı standart ancak nadiren kullanılan seçenekler zaten mevcuttur: aritmetik kodlama seçeneği ve aşamalı kodlama seçeneği (her katsayı için değerler bağımsız olarak kodlandığı ve her katsayı önemli ölçüde farklı bir dağılıma sahip olduğu için daha düşük bit hızları üretir). Modern yöntemler bu teknikleri daha büyük büyüklükteki katsayıları bir arada gruplamak için katsayıları yeniden sıralayarak; yeni katsayı değerlerini tahmin etmek için bitişik katsayıları ve blokları kullanarak; blokları veya katsayıları istatistiklerine ve bitişik değerlerine göre az sayıda bağımsız olarak kodlanmış model arasında bölerek ve son olarak blokların kodunu çözerek, uzamsal alanda sonraki blokları tahmin ederek ve ardından bunları DCT katsayıları için tahminler oluşturmak üzere kodlayarak geliştirmiştir.

Tipik olarak, bu tür yöntemler mevcut JPEG dosyalarını yüzde 15 ila 25 arasında sıkıştırabilir ve düşük kaliteli ayarlarda sıkıştırılmış JPEG'ler için %65'e varan iyileştirmeler sağlayabilir.

packJPG adında ücretsiz olarak kullanılabilen bir araç 2007 tarihli "JPEG Dosyaları için Geliştirilmiş Artıklık Azaltma" makalesine dayanmaktadır.

Stereoskopik 3D için türetilmiş formatlar

JPEG Stereoskopik

Stereoskopik .JPS dosyasına bir örnek

JPS, 2D görüntülerden 3D efektler oluşturmak için kullanılan stereoskopik bir JPEG görüntüsüdür. Biri sol göz, diğeri sağ göz için olmak üzere iki statik görüntü içerir; tek bir JPG dosyasında yan yana iki görüntü olarak kodlanır. JPEG Stereoscopic (JPS, uzantısı .jps) stereoskopik görüntüler için JPEG tabanlı bir formattır. JPEG APP3 işaretleyici alanında saklanan bir dizi konfigürasyona sahiptir, ancak genellikle çift genişlikte bir görüntü içerir ve şaşı (yani görüntünün sağ yarısında sol çerçeve ve tersi) yan yana düzenlemede aynı boyutta iki görüntüyü temsil eder. Bu dosya biçimi herhangi bir özel yazılım olmadan JPEG olarak görüntülenebilir veya diğer modlarda işlenmek üzere işlenebilir.

JPEG Çoklu Resim Formatı

JPEG Çoklu Resim Formatı (MPO, uzantısı .mpo), birden fazla görüntüyü tek bir dosyada saklamak için kullanılan JPEG tabanlı bir formattır. Birleştirilmiş iki veya daha fazla JPEG dosyası içerir. Ayrıca görüntü açıklaması için bir JPEG APP2 işaretleyici segmenti tanımlar. Fujifilm FinePix Real 3D W1, HTC Evo 3D, JVC GY-HMZ1U AVCHD/MVC uzantılı video kamera, Nintendo 3DS, Panasonic Lumix DMC-TZ20, DMC-TZ30, DMC-TZ60, DMC-TS4 (FT4) ve Sony DSC-HX7V gibi çeşitli cihazlar 3D görüntüleri depolamak için kullanır. Diğer cihazlar bunu bir TV'de görüntülenebilecek "önizleme görüntülerini" depolamak için kullanır.

Son birkaç yılda, stereoskopik görüntülerin artan kullanımı nedeniyle, bilimsel topluluk tarafından stereoskopik görüntü sıkıştırma algoritmaları geliştirmek için çok çaba harcanmıştır.

Uygulamalar

JPEG codec'inin çok önemli bir uygulaması, Bağımsız JPEG Grubu'nun ücretsiz programlama kütüphanesi libjpeg'dir. İlk olarak 1991 yılında yayınlanmıştır ve standardın başarısı için kilit rol oynamıştır. Bu kütüphane ya da doğrudan bir türevi sayısız uygulamada kullanılmaktadır. Son sürümler, önceki sürümlerle ABI uyumluluğunu bozan ve ITU|ISO/IEC standardı tarafından kapsanmayan tescilli uzantıları tanıtmaktadır.

Mart 2017'de Google, daha küçük dosya boyutu için çok daha uzun bir kodlama süresini takas eden (Zopfli'nin PNG ve diğer kayıpsız veri formatları için yaptığına benzer) açık kaynaklı proje Guetzli'yi yayınladı.

ITU|ISO/IEC, JPEG referans uygulamalarını 2021 yılında ITU-T Recommendation T.873 | ISO/IEC 10918-7'de resmileştirmiştir.

ISO/IEC Joint Photography Experts Group, hem temel JPEG (ISO/IEC 10918-1 ve 18477-1) hem de JPEG XT uzantılarını (ISO/IEC 18477 Bölüm 2 ve 6-9) ve JPEG-LS'yi (ISO/IEC 14495) kodlayabilen iki referans yazılım uygulamasından birini sürdürmektedir.

İkinci bir referans uygulama, yüksek performans ve JPEG standardına uyum için ayarlanmış Indedependent JPEG Group'un JPEG uygulamasının bir türevi olan libJPEG-turbo'dur.

JPEG XT

JPEG XT (ISO/IEC 18477) Haziran 2015'te yayınlanmıştır; temel JPEG formatını daha yüksek tamsayı bit derinlikleri (16 bite kadar), yüksek dinamik aralıklı görüntüleme ve kayan nokta kodlama, kayıpsız kodlama ve alfa kanalı kodlama desteği ile genişletir. Uzantılar, temel JPEG/JFIF dosya formatı ve 8 bit kayıplı sıkıştırılmış görüntü ile geriye dönük olarak uyumludur. JPEG XT, JFIF tabanlı genişletilebilir bir dosya formatı kullanır. Uzantı katmanları JPEG 8-bit temel katmanı değiştirmek ve yüksek çözünürlüklü görüntüyü geri yüklemek için kullanılır. Mevcut yazılım ileriye dönük olarak uyumludur ve JPEG XT ikili akışını okuyabilir, ancak yalnızca 8 bitlik temel katmanın kodunu çözebilir.

JPEG XL

Ağustos 2017'den bu yana JTC1/SC29/WG1, JPEG'e kıyasla önemli ölçüde daha iyi sıkıştırma verimliliğine (%60 iyileştirme) sahip yeni nesil görüntü sıkıştırma standardı olan JPEG XL için bir dizi taslak teklif çağrısı yayınladı. Standardın HEVC HM, Daala ve WebP tarafından gösterilen hareketsiz görüntü sıkıştırma performansını aşması ve JPEG'in yerini almaya çalışan önceki çabaların aksine, geleneksel JPEG görüntüleri için kayıpsız daha verimli yeniden sıkıştırma taşıma ve depolama seçeneği sağlaması beklenmektedir. Temel gereksinimler arasında çok yüksek çözünürlüklü görüntüler (en az 40 MP), bileşen başına 8-10 bit, RGB/YCbCr/ICtCp renk kodlaması, animasyonlu görüntüler, alfa kanalı kodlaması, Rec. 709 renk uzayı (sRGB) ve gama işlevi (2,4-güç), Rec. 2100 geniş renk gamı renk uzayı (Rec. 2020) ve yüksek dinamik aralık aktarım işlevleri (PQ ve HLG) ve bitmap yazı tipleri ve degradeler gibi sentetik görüntülerin yüksek kalitede sıkıştırılması için destek bulunmaktadır. Standart ayrıca daha yüksek bit derinlikleri (12-16 bit tamsayı ve kayan nokta), ek renk uzayları ve aktarım işlevleri (Arri'den Log C gibi), gömülü önizleme görüntüleri, kayıpsız alfa kanalı kodlaması, görüntü bölgesi kodlaması ve düşük karmaşıklıkta kodlama sunmalıdır. Patentli teknolojiler telifsiz olarak lisanslanacaktır. Teklifler Eylül 2018'e kadar sunulmuş, Temmuz 2019'da bir komite taslağı oluşturulmuş, dosya formatı ve çekirdek kodlama sistemi sırasıyla 13 Ekim 2021 ve 30 Mart 2022'de resmi olarak standartlaştırılmıştır.

Görüntü kodlama yöntemi

Ayrık kosinüs dönüşümü ve nicemleme

Her renk bileşeni, 8x8 bloklar halinde ayrık kosinüs dönüşümü ile dönüştürülür, bu sayede resmin enerjisi az sayıda (dönüşüm uzayındaki) pikselde yoğunlaştırılır. Dönüştürülen blokların nicemlenmesi sonrasında da sıfırdan farklı az sayıda değer ile bloğu ifade etmek mümkün olur. Dönüşüm uzayındaki yüksek frekans pikselleri, resmin görsel kalitesinde görece az rol oynarlar, dolayısıyla yüksek frekans pikselleri daha az sayıda değere nicemlenir.

Nicemleme, sıkıştırma miktarının ayarlanabilmesini de sağlar. Daha çok nicemleme ile aslından uzak ama daha çok sıkıştırılmış görüntüler elde edilebilir. Nicemlemenin bu yan etkisi görüntüden görüntüye değişen bir nicemleme miktarına kadar büyük miktarda görsel bozulmalara neden olmaz.

Nicemleme sonrasında görüntü blokları nicemleme öncesine göre daha az çeşit sayı(sembol) ile ifade edilir hale gelir. Sık rastlanan semboller daha az, seyrek semboller daha çok bitle kodlanarak bilginin daha yoğun ifade edilmesi sağlanabilir. Nicemlenmiş görüntü blokları, standart ya da görüntüye özgü kod tabloları kullanılarak kodlanır ve dosyada depolanırlar.

Nicemlenmiş blokların aritmetik kodlama ile kodlanması da mümkündür, ancak aritmetik kodlamanın üstündeki patentler nedeniyle bu yöntem popüler değildir.

Sıkıştırma kaynaklı görüntü bozulmaları

Bir kedi fotoğrafının düşükten yükseğe olacak şekilde (soldan sağa) çeşitli JPEG oranlarındaki görünüşü.

Sıkıştırma oranı arttıkça görsel detayda azalma görülür. Oranın artmasıyla keskin hatların etrafında dalgalanmalar ve detay kaybı, yüksek sıkıştırma ortanlarında da bloklanma belirgin hale gelir. JPEG görüntülerin çeşitli dönüşümler geçirmesi (ör. ölçeklenme) sıkıştırma yan etkilerini daha belirgin hale getirebilir.

JPEG kodlanmış görüntüde yüksek frekans bileşenleri görüntü detay bilgisinin önemli bir kısmını içerir. Sıkıştırma oranı yükseldikçe yüksek frekans bileşenlerinin daha fazlası kaybedilir. En yüksek sıkıştırma oranlarında ise sadece en düşük frekans bileşeni sıfırdan farklıdır, bu nedenle görüntü bloklar halinde görülür.

Diğer görüntü biçimleriyle karşılaştırması

Soldaki JPEG resimde bulanıklıklar varken, PNG çok daha keskin ve temiz

JPEG'in kullanım alanları

JPEG, özellikle doğa görüntüleri gibi yüksek frekanslı bileşenleri görece önemsiz görüntüleri çok az görsel kayıpla, kayıpsız sıkıştırma yöntemlerinden çok daha yüksek verimle sıkıştırabilir. Ancak, çizimler ya da keskin hatlı cisimler içeren görüntülerde sıkıştırma miktarı arttıkça keskin hatların etrafında dalgalanma görülür.