• En kolay resim formatı nedir? Görüntü sıkıştırma algoritmaları. JPEG algoritması, kayıplı bir veri sıkıştırma algoritmasıdır.

    Bir JPEG grafik görüntüsünü dönüştürme algoritması, görüntü üzerinde birbiri ardına sırayla gerçekleştirilen birkaç aşamadan oluşur:

    – renk alanı dönüşümleri,

    – alt örnekleme,

    – ayrık kosinüs dönüşümü (DCT),

    - kuantizasyon,

    – kodlama.

    Renk alanı dönüştürme aşamasında, görüntü RGB renk alanından YCbCr'ye dönüştürülür (burada Y parlaklıktır ve Cb ve Cr, görüntü noktasının renk farkı bileşenleridir):

    alan uygulaması YCbCr her zamanki yerine RGB insan görüşünün fizyolojik özelliklerinden dolayı, yani, gergin sistem bir kişinin parlaklığa karşı çok daha fazla duyarlılığı vardır ( Y) renk farkı bileşenlerine göre (bu durumda Cb Ve cr). Ters renk uzayı dönüştürme ( YCrCb V RGB) şuna benziyor:

    JPEG sıkıştırma algoritması, görüntüleri farklı renk düzlemi boyutlarıyla sıkıştırmanıza olanak tanır. ile göster x ben Ve sen ben genişlik ve yükseklik Ben görüntünün -inci renk düzlemi. İzin vermek X= maks.(x ben), Y= maks.(sen ben), her düzlem için katsayıları tanımlarız MERHABA= X/ x ben Ve Vi= Y/ sen ben. için en yüksek değer X Ve Y JPEG algoritmasına göre 2 16 ve için MERHABA Ve Vi– 2 2 . Böylece, renk düzlemlerinin genişliği ve yüksekliği, en büyük düzlemin boyutlarından 1 ila 4 kat daha az olabilir. Sıradan için RGB görüntülerde, tüm renk düzlemlerinin boyutları eşittir.

    Alt örnekleme, uçakların boyutunu küçültmek içindir cr Ve Cb. En yaygın küçültme genişliğin 2 katı ve yüksekliğin 2 katıdır (bkz. Şekil 1). Bunun için cr Ve Cb görüntü düzlemleri 2'ye 2 nokta boyutunda bloklara bölünür ve blok, renk farkı bileşenlerinin bir örneği ile değiştirilir (mevcut 4 örneğin yerine, her blok için aritmetik ortalamaları konur, bu da boyutun azaltılmasına olanak tanır orijinal görüntünün 2 katı).

    Şekil 1 - Yaygın alt örnekleme türleri

    Ardından, renk uzayının her bir bileşeni için ayrı ayrı Y, Cb Ve cr doğrudan ayrı bir kosinüs dönüşümü gerçekleştirilir. Bunu yapmak için, görüntü 8'e 8 piksel boyutunda bloklara bölünür ve her blok aşağıdaki formüle göre dönüştürülür:

    Ayrık kosinüs dönüşümünün kullanılması, görüntünün uzamsal temsilinden spektral olana geçmeyi mümkün kılar. Ters ayrık kosinüs dönüşümü şu şekildedir:

    Bundan sonra, alınan bilgilerin nicelenmesine geçebilirsiniz. Niceleme fikri, bir miktar bilgiyi atmaktır. İnsan gözünün yüksek frekanslara (özellikle renk farkı bileşenlerinin yüksek frekanslarına) daha az duyarlı olduğu bilinmektedir, çoğu fotoğraf görüntüsü birkaç yüksek frekans bileşeni içerir. Ek olarak, yüksek frekansların ortaya çıkması sayısallaştırma sürecinin bir sonucudur, yani. eşlik eden örnekleme ve niceleme gürültüsünün ortaya çıkması nedeniyle. Bu aşamada sözde kuantizasyon tabloları- elemanlarına görüntü bloklarının karşılık gelen frekanslarının bölündüğü, 8'e 8 boyutunda pozitif tam sayılardan oluşan matrisler, sonuç bir tam sayıya yuvarlanır:



    .

    Dekuantizasyon işleminde de nicemlemede olduğu gibi aynı tablolar kullanılır. Dekuantizasyon, nicelenmiş frekansların niceleme tablosunun karşılık gelen öğeleriyle çarpılmasından oluşur:

    Böylece niceleme katsayısındaki artışla birlikte atılan bilgi miktarı artar. Buna bir örnekle daha detaylı bakalım.

    Kuantizasyondan önce bloke et:

    3862, –22, –162, –111, –414, 12, 717, 490,

    383, 902, 913, 234, –555, 18, –189, 236,

    229, 707, –708, 775, 423, –411, –66, –685,

    231, 34, –928, 34, –1221, 647, 98, –824,

    –394, 128, –307, 757, 10, –21, 431, 427,

    324, –874, –367, –103, –308, 74, –1017, 1502,

    208, –90, 114, –363, 478, 330, 52, 558,

    577, 1094, 62, 19, –810, –157, –979, –98

    Niceleme tablosu (kalite 90):

    24, 16, 16, 24, 40, 64, 80, 96,

    16, 16, 24, 32, 40, 96, 96, 88,

    24, 24, 24, 40, 64, 88, 112, 88,

    24, 24, 32, 48, 80, 136, 128, 96,

    32, 32, 56, 88, 112, 176, 168, 120,

    40, 56, 88, 104, 128, 168, 184, 144,

    80, 104, 128, 136, 168, 192, 192, 160,

    112, 144, 152, 160, 176, 160, 168, 160

    Kuantizasyondan sonra bloke et:

    161, –1, –10, –5, –10, 0, 9, 5,

    24, 56, 38, 7, –14, 0, –2, 3,

    10, 29, –30, 19, 7, –5, –1, –8,

    10, 1, –29, 1, –15, 5, 1, –9,

    –12, 4, –5, 9, 0, 0, 3, 4,

    8, –16, –4, –1, –2, 0, –6, 10,

    3, –1, 1, –3, 3, 2, 0, 3,

    5, 8, 0, 0, –5, –1, –6, –1

    3864, –16, –160, –120, –400, 0, 720, 480,

    384, 896, 912, 224, –560, 0, –192, 264,

    240, 696, –720, 760, 448, –440, –112, –704,

    240, 24, –928, 48,–1200, 680, 128, –864,

    –384, 128, –280, 792, 0, 0, 504, 480,

    320, –896, –352, –104, –256, 0,–1104, 1440,

    240, –104, 128, –408, 504, 384, 0, 480,

    560, 1152, 0, 0, –880, –160,–1008, –160

    Niceleme tablosu (kalite 45):

    144, 96, 88, 144, 216, 352, 456, 544,

    104, 104, 128, 168, 232, 512, 536, 488,

    128, 112, 144, 216, 352, 504, 616, 496,

    128, 152, 192, 256, 456, 776, 712, 552,

    160, 192, 328, 496, 600, 968, 912, 680,

    216, 312, 488, 568, 720, 920, 1000, 816,

    432, 568, 696, 776, 912, 1072, 1064, 896,

    640, 816, 840, 872, 992, 888, 912, 880

    Kuantizasyondan sonra bloke et:

    27, 0, –2, –1, –2, 0, 2, 1,

    4, 9, 7, 1, –2, 0, 0, 0,

    2, 6, –5, 4, 1, –1, 0, –1,

    2, 0, –5, 0, –3, 1, 0, –1,

    –2, 1, –1, 2, 0, 0, 0, 1,

    2, –3, –1, 0, 0, 0, –1, 2,

    0, 0, 0, 0, 1, 0, 0, 1,

    1, 1, 0, 0, –1, 0, –1, 0

    Ters dönüşümden sonra engelle:

    3888, 0, –176, –144, –432, 0, 912, 544,

    416, 936, 896, 168, –464, 0, 0, 0,

    256, 672, –720, 864, 352, –504, 0, –496,

    256, 0, –960, 0,–1368, 776, 0, –552,

    –320, 192, –328, 992, 0, 0, 0, 680,

    432, –936, –488, 0, 0, 0,–1000, 1632,

    0, 0, 0, 0, 912, 0, 0, 896,

    640, 816, 0, 0, –992, 0, –912, 0

    Görüldüğü gibi ilk durumda değişiklik DC sıkıştırma sonucu katsayı 2'dir ve ikinci 26'da nicemlenirken DC ikinci durumdaki katsayı birinciden 6 kat daha azdır.

    Kodlama, görüntü bloklarının dönüştürüldüğü sıkıştırmanın son aşamasıdır. vektör şekli formun blokları tarafından belirtilen kurala göre:

    0, 1, 5, 6, 14, 15, 27, 28,

    2, 4, 7, 13, 16, 26, 29, 42,

    3, 8, 12, 17, 25, 30, 41, 43,

    9, 11, 18, 24, 31, 40, 44, 53,

    10, 19, 23, 32, 39, 45, 52, 54,

    20, 22, 33, 38, 46, 51, 55, 60,

    21, 34, 37, 47, 50, 56, 59, 61,

    35, 36, 48, 49, 57, 58, 62, 63

    burada blok elemanları karşılık gelen matris bileşenlerinin vektör indeksleridir. Bu durumda sıfır elemanı önceki bloğun sıfır elemanı ile farkı olarak kodlanır. Sıfır eleman gösterir DC, bloğun sabit bileşenini içerirler (diğer tüm AC elemanları genellikle AC).

    Ortaya çıkan veriler daha sonra aritmetik kodlama veya Huffman algoritmasının bir modifikasyonu kullanılarak sıkıştırılır. Bu aşama steganografi açısından pek ilgi çekici değildir. grafik, bu nedenle, incelememizin kapsamı dışındadır.

    JPEG algoritması, Birleşik Fotoğraf Uzman Grubu (JPEG) tarafından özellikle görüntü sıkıştırma için geliştirilmiştir ve DCT'ye dayalıdır.

    DCT, görüntüyü, bazı DCT işlevlerinin kullanılmaması nedeniyle bazıları sıfıra eşit olabilen bir katsayılar kümesine ayrıştırır. Zaten bu gerçeği kullanarak, bir miktar veri sıkıştırması elde etmek mümkündür. Bununla birlikte, en büyük etki, bazı önemsiz katsayıların çıkarılmasıyla (sıfıra eşitlenmesiyle) elde edilir.

    Genellikle dışarıdan matrisin açıkça görülebilen bir özelliği vardır. Matris elemanlarının sayısal değerleri sol üst köşeden sağ alt köşeye doğru hızla azalmaktadır. Böylece en önemli veriler sol üst köşeye, en önemsiz veriler ise sağ alt köşeye yerleştirilir. Bu gerçeği kullanarak, en önemsiz veriler elenebilir. Bunu yapmak için dönüştürülen verileri nicelleştirin.

    Niceleme fikri, belirli bir görüntü parçası hakkındaki tüm bilgilerin önemli bir bölümünü oluşturmak için spektral (frekans) bilgisinin bilinen bir eşiği aşması gerektiğidir. Bilginin bir kısmının kaybı ve sonuç olarak kalite kaybının meydana geldiği niceleme aşamasındadır.

    Niceleme genellikle, DCT'nin öğelerini bölmek için gerekli olacak bölenleri içeren özel bir matris temelinde gerçekleştirilir. Aşağıdaki algoritma sıklıkla kullanılır:

    Q(i,j) = 1 + ((1 + i + j)q);

    Q(i,j) bölenlerin matrisi olduğunda,

    q - kalite parametresi.

    q parametresini seçerek bölen değerlerini kontrol edebilir ve sıkıştırma oranını ayarlayabilirsiniz. Örneğin, q = 2 ise, aşağıdaki formda bir matris elde edersiniz (Şekil 3.6):

    Şekil 3.6. Niceleme matrisinin bir örneği.

    Matrisin 64 elemanını Q(i,j) matrisinin elemanlarına böldükten sonra, sonuç olarak, aşağıdakileri içeren bir matris:

    Çok sayıda ek sıfır değeri olacak,

    Sol üstten sağ alta doğru azalan değerlerin etkisi daha da belirgin olacaktır.

    Ekonomik gösterim için, elde edilen değerlerin geçiş sırasının, sıfır elemanların dizileri mümkün olduğu kadar uzun olacak şekilde değiştirilmesi gerekir. Biri olası yollar geçiş sırasını değiştirmek zig-zag yöntemidir (Şekil 3.7).

    Şekil 3.7. İki boyutlu bir matrisin "zikzak" yöntemi kullanılarak tek boyutlu bir diziye dönüştürülmesi.

    Şekilden de görülebileceği gibi 8 x 8 elemanlı iki boyutlu bir matris 64 elemanlı tek boyutlu bir diziye dönüştürülmektedir. Böyle bir dizinin ana özelliği, başlangıcındaki en önemli katsayıların ve sonundaki en önemsiz elemanların (genellikle sıfırlar) konumu olacaktır.

    Algoritmanın uygulanması, Şekil 1'de gösterilen bir dizi sıralı eylemi içerir. 3.8.

    Şekil 3.8. JPEG algoritmasının uygulanmasındaki işlem sırası.

    1. Gerekirse görüntü YUV formatına dönüştürülür.

    2. Renk farkı U ve V sinyalleri 4:2:0 formatına göre örneklenir. Görüntüyü 8 x 8 öğelik parçalara ayırma. Ayrıca parlaklık ve krominans sinyallerinin işlenmesi bağımsız ve paralel olarak gerçekleştirilebilir.

    3. 8 x 8 elemanlı tüm bloklarda ayrık kosinüs dönüşümü yapılır.

    4. Seçilen kalite parametresine göre niceleme.

    5. 64 öğeden oluşan tek boyutlu bir dizi elde etmek için "zikzak" taraması.

    6. RLE algoritması tek boyutlu diziye uygulanır.

    7. Huffman algoritması, halihazırda RLE ile sıkıştırılmış bir diziye uygulanır.

    8. S.p. 3 - 7, 8 x 8 eleman formatındaki tüm bloklar ve tüm renk düzlemleri için gerçekleştirilir.

    JPEG yönteminin başlıca özellikleri şunlardır:

    1. Özellikle iyi veya mükemmel kalitede kabul edilen görüntüler için yüksek sıkıştırma oranı.

    2. Gelişmiş bir kullanıcının yöntem ayarlarıyla deneme yapmasına ve gerekli sıkıştırma/kalite dengesini elde etmesine olanak tanıyan çok sayıda parametre.

    3. Çözünürlük, renk alanı, piksel boyutu veya diğer özelliklerinden bağımsız olarak her türlü sürekli tonlu görüntü için iyi sonuçlar.

    4. Oldukça gelişmiş bir sıkıştırma yöntemi, ancak çok karmaşık değil, yöntemi çoğu platformdaki bilgisayarların yanı sıra donanım için uygulamak için uygun aygıtlar oluşturmanıza ve programlar yazmanıza olanak tanır.

    5. Çok yüksek olmayan bir sıkıştırma oranında bilgi kaybı olmadan sıkıştırma kullanma imkanı.

    Eski güzel JPEG, pek çok inkar edilemez avantajına rağmen, hala önemli sınırlamalara sahiptir. Onları indirmeleri için çağrıldılar. yeni yöntem uzun süredir geliştirilen görüntü sıkıştırma. Artık JPEG2000 resmi olarak tanınan bir format haline geldiğine göre, bu, çeşitli yazılım üreticileri tarafından aktif desteğinin başlangıcı olmalıdır.

    Elbette bir bilgisayarda grafiklerle çalışan birçok kişi şu soruyla ilgileniyor: PC belleğinde çok etkileyici bir yer kaplayan bir görüntü, diskte çok daha küçük bir boyuta nasıl sıkıştırılabilir? Yayıncılık faaliyetimin başlangıcında, "sıkıştırma" kelimesinin benim için çok gizemli ve şaşırtıcı olduğunu hatırlıyorum ... Aslında, görüntüler nasıl sıkıştırılır - sonuçta, onsuz, artık ne Ağı ne de hayal etmek imkansızdır. dijital Fotoğrafçılık, renkli baskı yok mu?

    Yani sıkıştırma. Kalite kaybına yol açabilir veya açmayabilir. Son durum ise RLE (Run Length Encoding, Run Length Encoding, Run Uzunluklarının Kodlanması) gibi tür çiftlerinin () olduğu yöntemlerdir. atlamak, değer, Nerede atlamak ardışık sıfırların sayısıdır ve değer- onları takip eden değer) ve PSD, GIF ve TIFF formatlarında uygulanan LZW (Lempel-Ziff-Welch yöntemiyle sıkıştırma). RAR ve ZIP gibi arşivleyiciler tarafından yaygın olarak kullanılırlar. Ortalama kayıpsız sıkıştırma oranı 2-3 katıdır.

    Görüntüyü daha güçlü bir şekilde sıkıştırmanız gerekirse, kalite kaybı olmadan yapamazsınız. İlkeler nelerdir? İlk olarak, herhangi bir görüntü, kaldırılması resmin kalitesinde gözle görülür bir değişikliğe yol açmayacak belirli bir fazlalık içerir. İkincisi, insan gözü parlaklıktaki değişikliklere renkten daha duyarlıdır. Bu nedenle, görüntünün farklı kanalları için farklı sıkıştırma oranları kullanılır - bilgi kaybolur, ancak bu görsel olarak fark edilmez. Ayrıca gözün küçük görüntü öğelerine duyarlılığı düşüktür, bu da kaliteden ödün vermeden bunları ortadan kaldırmayı mümkün kılar. Bu şekilde, görüntüyü (kalite düşüşü zaten fark edilse bile) kabul edilebilir bir eşiğe kadar sıkıştırabilirsiniz. Kalite bozulma derecesi, her özel durum için belirlenir. Yazdırma için yalnızca minimum bozulmalar kabul edilebilir ve İnternette yayınlamak için (amaca bağlı olarak) - çok daha fazlası.

    Kayıplı sıkıştırma yöntemleri arasında en popüler olanı, otuz kat sıkıştırmada bile yeterli görüntü kalitesini koruyan JPEG'dir. Bu arada, çoğu modern veri sıkıştırma yönteminde (örneğin, mp3 olarak bilinen Layer-4 ve MPEG), JPEG'e benzer mekanizmalar uygulanır. Bu formata daha yakından bakalım, özellikle de kısa bir süre önce JPEG/MPEG'e on yıllık geliştirme sürecinde yapılan tüm eklemeleri içeren en son uygulaması olan JPEG2000 nihayet onaylandığından beri.

    jpeg

    Sıkıştırma algoritmasının adı, ITU (Uluslararası Telekomünikasyon Birliği) ve ISO'dan (Uluslararası Standardizasyon Örgütü) uzmanlar tarafından oluşturulan bir girişim grubu olan Ortak Fotoğraf Uzman Grubu'nun kısaltmasıdır. Bu nedenle adında Ortak ön eki bulunur. 1992'de JPEG, grafik için uluslararası standart ilan edildi.

    JPEG sıkıştırması her zaman kaliteyi kaybeder. Bu durumda, her zaman bir seçenek vardır: hacim pahasına kaliteyi tercih etmek (dosya boyutu yaklaşık üç kat sıkıştırılacaktır) veya tam tersi, hala tanınabilir kalacağı minimum görüntü boyutunu elde etmek için ( sıkıştırma oranı 100'e ulaşabilir). Ortaya çıkan görüntü ile orijinal arasındaki kalite farkının hala fark edilmediği sıkıştırma, dosya boyutunda 10-20 kat azalma sağlar.

    uygulama alanı

    JPEG, fotoğraf kalitesinde tam renkli ve tek renkli görüntüleri en iyi şekilde sıkıştırır. Bir görüntüyü dizin paletiyle kaydetmek istiyorsanız, önce tam renge dönüştürülür. JPEG yöntemini kullanarak sıkıştırırken, her şeyin görüntülerin doğasına bağlı olduğunu aklınızda bulundurmanız gerekir: renk değişikliklerinin önemsiz olduğu ve keskin renk geçişlerinin olmadığı yerler çok daha küçük bir hacim kaplar. JPEG, fotoğraf görüntülerinin saklanması gereken her yerde kullanılır: içinde dijital kameralar, poligrafi (EPS DCS 2.0), İnternet onsuz düşünülemez.

    Birkaç JPEG sıkıştırma türü vardır, ancak standart pakette bitmap'lerle çalışmak için kullanılan yalnızca ikisini ele alacağız. Adobe görüntüleri fotoğraf, taban çizgisi Ve ilerici. Diğer iki yöntem - aritmetik ve kayıpsız - yaygın olarak kullanılmayan birkaç nedenden dolayı egzotiktir.

    Sıkıştırma Nasıl Olur?

    1. İlk aşama şunlardan oluşur: renk modeli dönüştürme görüntüyü (genellikle RGB), parlaklık ve renk bileşenlerinin ayrıldığı bir modele (örneğin, YCbCr veya YUV) dönüştürür, bu da her kanal için (göz algısını dikkate alarak) sıkıştırma seviyeleri seçimine en iyi şekilde yaklaşmanıza olanak tanır. Dönüşüm şöyle olur:

    Y = 0,299xR+0,587*G+0,114xB Cb = (B-Y)/0,866/2+128 Cr = (R-Y)/0,701/2+128

    2. Bir sonraki aşamada sözde. ön filtreleme Cb ve Cr kanallarının her birinde ayrı ayrı komşu piksellerin yatay ve dikey yönlerde çiftler halinde gruplandığı ve parlaklık kanalı Y'nin değişmeden kaldığı. Bundan sonra, dört piksellik grubun tamamı ilgili Cb ve Cr bileşenlerinin ortalama değerini alır. Kısa olması için, böyle bir şema 4:1:1 olarak belirlenebilir (aynı temsil biçimi DRAW'da - jpeg dışa aktarma penceresi benimsenmiştir). Her pikselin 3 bayt olarak kodlandığı (üç kanalın her biri için 256 seviye) dikkate alındığında, sonuç olarak veri miktarı otomatik olarak 2 kat azaltılır (4 pikseli aktarmak için 12 bayt yerine, sadece 4+1+1 = 6 bayt aktarmak için yeterli) . Matematik açısından bakıldığında, böyle bir dönüşüm önemli bir bilgi kaybına yol açar, ancak sıradan fotoğraf görüntülerinde önemli bir fazlalık olduğu için insan gözü kaybı algılamaz.

    3. Birincil "temizlik" aşamasını geçen alınan bilgiler, yine her kanalda ayrı ayrı bloklar halinde, ancak zaten 8x8 boyutunda gruplandırılır ve ardından bunlara ana sıkıştırma uygulanır - sözde. ayrık kosinüs dönüşümü, kısaca - DCT (ayrık kosinüs dönüşümü). Sonuç olarak, bilgi dağıtım hakkında piksel parlaklığı, şuna dayalı bir dağılımla açıklandığı başka bir forma dönüştürülür: oluşma sıklığı bir veya daha fazla piksel parlaklığı. DCT'nin diğer dönüşümlere (örneğin Fourier dönüşümü) göre daha iyi bilgi kurtarma sağlayan bir dizi avantajı vardır.

    Görüntüyü oluşturan her blok için 64 değer dizisi (8x8 piksel) yerine 64 frekans dizisi elde ederiz. DCT'nin çalışmasını bir örnek üzerinde düşünün. Diyelim ki görüntümüzün bir bloğundaki piksellerin parlaklığı Şekil 1'de gösterilen forma sahip. 1 solda, ardından dönüşüm sonucu sağda gösterildiği gibi olacaktır.

    1

    Önemli ölçüde doğru olmasına rağmen, bu aşamada bir miktar bilgi kaybı meydana gelir - bu nedenle JPEG her zaman kalite kaybına neden olur. Dönüşümün temel amacı, önemsiz bilgileri ortadan kaldırırken daha sonra kullanışlı olacak olan büyük (şekilde sol üst) ve küçük (sağ alt) nesnelerin dağılımının genel resmini bulmaktır.

    4. Bir sonraki adım, gözle zor fark edilen bilgileri bloktan kaldırmak veya kuantizasyon(kuantizasyon). Tüm bileşenler ayrılmıştır çeşitli katsayılar, orijinal görüntünün niteliksel restorasyonu için her birinin önemini belirleyen ve sonuç yuvarlanmış bir tamsayı değerine. Görüntünün son hacmini azaltan, en büyük kalite kaybını getiren bu prosedürdür. Yüksek frekanslı bileşenler kabaca nicelenir ve düşük frekanslı bileşenler en belirgin oldukları için daha kesin olarak nicelenir. Kalitedeki düşüşü biraz yumuşatmak için, parlaklık kanalında renk kanallarından daha küçük bölme faktörleri kullanılır. Ancak daha sık (bu, hesaplamaları hızlandırmak için yapılır), özel olarak seçilen değerler yerine, yalnızca bir tanesi alınır - kullanıcının sıkıştırma derecesini seçerken girdiği değer.

    Örneğin, Kalite parametresinin (veya daha doğrusu türevinin) aynı olduğu Web için kaydet işlemini kullanarak bir görüntüyü kaydederken Photoshop penceresinin nasıl göründüğü buradadır. yuvarlama faktörü(İncir. 2).

    Nicelemenin bir sonucu olarak, orijinal görüntünün belirli bir doğrulukla geri yüklendiği bir dizi bileşen elde edilir (Şekil 3).

    4

    Şek. Şekil 4, sırasıyla bir, dört ve on beş bileşenli siyah beyaz bir karenin eski haline getirilmesinin sonucunu göstermektedir.

    5. Görüntü sıkıştırmayla ilgili ana çalışmayı gerçekleştirdikten sonra, diğer dönüşümler ikincil görevlere indirgenir: kalan bileşenler sırayla gidiyoröyle ki, önce büyük ayrıntılardan sorumlu olanlar, sonra da tüm küçük ayrıntılardan sorumlu olanlar belirlenir. Şekle bakarsanız, kodlayıcının hareketi bir zikzak çizgisi gibi görünür. Aşama ZigZag olarak adlandırılır (Şekil 5).

    5

    Ardından ortaya çıkan dizi sıkıştırılır: önce normal RLE ile, ardından Huffman yöntemiyle.

    6. Ve sonunda temiz teknik aşama- veriler, görüntünün geri yüklenebilmesi için tüm sıkıştırma parametrelerini gösteren bir başlıkla sağlanan bir kabuk içine alınır. Ancak bazen bu bilgiler başlıklarda yer almaz, bu da sıkıştırmada ek bir kazanç sağlar, ancak bu durumda dosyayı okuyacak uygulamanın bunları bildiğinden emin olmanız gerekir.

    Burada, genel olarak ve tüm dönüşümler. Şimdi örneğimizde ne kadar sıkıştırma sağlandığını hesaplayalım. Orijinal 8x8 görüntüsünü geri yükleyecek 7 değerimiz var. Böylece, her iki renk kanalında da DCT dönüştürme uygulamasından kaynaklanan sıkıştırma 8x8/7 9 kat oldu. 8x8/11 6 verecek parlaklık kanalına yedi değil 11 katsayı atayalım. Her üç kanal için de (9+9+6)/3=8 kat elde ederiz. İkinci aşamada meydana gelen görüntünün "kesilmesi" sırasındaki kalite düşüşü, nihai sonucu verecek olan ek bir çifte artış sağlar (parlaklık bileşenini kodlamanın özelliklerini dikkate alarak 4-1-1 şeması) - 16 kez. Bu, bazı yönleri hesaba katmayan ancak gerçek resmi yansıtan kaba bir tahmindir. Dosya boyutunda otuz kat azalma elde etmek için yalnızca 3-4 bileşen bırakmanız gerekir.

    Görüntü yeniden oluşturma işlemi ters sırada ilerler: önce bileşenler niceleme tablosundaki değerlerle çarpılır ve ters kosinüs dönüşümü için yaklaşık katsayılar elde edilir. Sıkıştırma sırasında kalite ne kadar iyi seçilirse, orijinal katsayılara yaklaşma derecesi o kadar yüksek olur, bu da görüntünün daha doğru bir şekilde geri yükleneceği anlamına gelir. Geriye sadece bir eylem eklemek kalır: bitirmeden önce, aralarındaki keskin farklılıkları ortadan kaldırmak için komşu bloklardan sınır piksellerinde bazı ayarlamalar (gürültü) yapın.

    JPEG'in Dezavantajları

    1. Blok boyutu sınırlaması nedeniyle (yalnızca 8x8) yüksek sıkıştırma oranları elde etmenin imkansızlığı.
    2. Yüksek sıkıştırma oranlarında bloklu yapı.
    3. yuvarlama keskin köşeler ve görüntüdeki ince öğeleri bulanıklaştırmak.
    4. Yalnızca RGB görüntüler desteklenir (DCS yoluyla EPS biçiminde yalnızca CMYK görüntüler için JPEG kullanabilirsiniz).
    5. Görüntü tamamen yüklenene kadar görüntülenemez.

    JPEG'in bir standart olarak onaylanmasından bu yana on yıl geçti. Bu süre zarfında, araştırma grupları orijinal versiyona bir dizi önemli eklemeler önerdi ve bu da geçen yılın sonunda yeni bir standardın ortaya çıkmasına neden oldu.

    JPEG2000

    1997 yılından itibaren, yaratmaya yönelik çalışmalar başlamıştır. evrensel sistem JPEG tarafından uygulanan tüm kısıtlamaları kaldıran ve siyah beyaz, gri tonlamalı, tam renkli ve çok bileşenli ve içerik ne olursa olsun (fotoğraf, oldukça küçük metin, hatta çizimler). Uluslararası standardizasyon kuruluşlarının yanı sıra Agfa, Canon, Fujifilm, Hewlett-Packard, Kodak, LuraTech, Motorola, Ricoh, Sony ve diğerleri gibi endüstri devleri de geliştirme sürecine katıldı.

    Yeni algoritmanın evrensel olduğu iddia edildiğinden, ayrıca çeşitli yollar veri aktarımı (içinde gerçek mod Bu, özellikle multimedya uygulamalarında, örneğin İnternet üzerinden gerçek yayınlarda kritiktir.

    JPEG2000 formatı için temel gereksinimler:

    1. JPEG ile karşılaştırıldığında daha yüksek bir sıkıştırma derecesi elde etmek.
    2. Görüntüleri metinle sıkıştırmak için kullanılmasına izin verecek tek renkli görüntüler için destek.
    3. Kayıpsız sıkıştırma imkanı.
    4. Ayrıntılı olarak kademeli olarak iyileştirilen görüntülerin çıktısını alın (aşamalı GIF'de olduğu gibi).
    5. Görüntüde, kalitesi görüntünün geri kalanından daha yüksek ayarlanabilecek öncelikli alanların kullanımı.
    6. Gerçek zamanlı kod çözme (gecikme yok).

    sıkıştırma prensibi

    JPEG2000'deki ana sıkıştırma mekanizması olarak, JPEG'den farklı olarak, görüntünün tamamına uygulanan bir filtre sistemi olan dalga (dalgacık) dönüşümü kullanılır. Sıkıştırmanın ayrıntılarına girmeden sadece ana noktaları not ediyoruz.

    6
    İlk olarak, tıpkı JPEG'de olduğu gibi, görüntü YCrCb sistemine dönüştürülür, ardından gereksiz bilgiler birincil olarak kaldırılır (bitişik piksellerin zaten bilinen kombinasyonuyla 2x2 bloklar halinde). Daha sonra tüm görüntü, her biri üzerinde diğerlerinden bağımsız olarak daha fazla dönüşüm gerçekleşecek olan aynı boyuttaki (döşeme) parçalara bölünür (bu, bellek ve bilgi işlem kaynakları için gereksinimleri azaltır). Ayrıca, her kanal alçak geçiren ve yüksek geçiren filtrelerle sıralar ve sıralar halinde ayrı ayrı filtrelenir, bunun sonucunda ilk geçişten sonra her bölümde dört küçük görüntü (alt bant) oluşturulur. Hepsi orijinal görüntü hakkında bilgi taşır, ancak bilgi içerikleri çok farklıdır (Şekil 6).

    Örneğin, satırlara ve satırlara (sol üst) göre düşük geçişli filtrelemeden sonra elde edilen görüntü en çok büyük miktar bilgi ve yüksek frekanstan sonra alınan - minimum. Satırların düşük geçişli filtrelemesinden ve sütunların yüksek frekanslı filtrelemesinden (ve tersi) sonra elde edilen görüntülerin bilgi içeriği ortalamadır. En bilgilendirici görüntü yeniden filtrelenir ve ortaya çıkan bileşenler, jpeg sıkıştırmada olduğu gibi nicelenir. Bu birkaç kez olur: kayıpsız sıkıştırma için, döngü genellikle kayıplarla birlikte 3 kez tekrarlanır - 10 yineleme, dekompresyonun boyutu, kalitesi ve hızı arasında makul bir uzlaşma olarak kabul edilir. Sonuç, küçük bir görüntü ve ince ayrıntılara sahip bir dizi görüntüdür, art arda ve belirli bir doğrulukla onu geri yükler. normal boyut. Açıkçası, daha fazla döngü ayarlanabildiğinden, en büyük sıkıştırma derecesi büyük görüntülerde elde edilir.

    Pratik uygulama

    JPEG2000 sıkıştırmasının temelleri atıldığından beri, bir dizi şirket, uygulanması için oldukça verimli algoritmalar geliştirdi.

    Başlıca yazılım geliştiricileri arasında Corel'e dikkat çekilebilir (bu arada, paketlerine dalga dönüşümlerine dayalı olarak wi formatı için destek sunan ilk kişilerden biriydi, bunun için bir onur ve övgüdür) - CD'lerde sağlanan tüm görüntüler dokuzuncu sürüme kadar CorelDRAW paketi ile bu şekilde sıkıştırılmıştır.

    Daha sonra, Adobe de bunu çekti. JPEG2000'in arkasındaki fikirlerden bazıları, bir görüntüyü JPEG olarak kaydederken (normal, kosinüs dönüşümüne dayalı) gelişmiş seçenekler biçiminde Photoshop 6 geliştiricileri tarafından uygulanmıştır. Bunların arasında aşamalı JPEG (Kaydet menüsündeki Aşamalı parametre) vardır. Web için). Bu algoritma, öncelikle gerçek zamanlı sistemler için tasarlanmıştır ve aşamalı GIF ile tam olarak aynı şekilde çalışır. İlk olarak, görüntünün yalnızca birkaç bloktan oluşan kaba bir kopyası görünür. büyük beden ve zamanla, verilerin geri kalanı yüklendiğinde, yapı, son görüntü tamamen geri yüklenene kadar giderek daha net bir şekilde görüntülenmeye başlar. GIF'ten farklı olarak, bu algoritma ağır yük aktarılan her sürüm için tüm dönüştürme döngüsünü tamamlaması gerekeceğinden görüntüleyicide.

    Diğer eklemelerin yanı sıra, değişen derecelerde sıkıştırma, çözünürlük ve hatta renk modellerine sahip birkaç JPEG sıkıştırılmış görüntünün dosyaya dahil edildiğini not ediyoruz. Buna göre, Photoshop 6'da görüntüdeki ayrı alanları seçmek ve bunlara farklı sıkıştırma ayarları uygulamak mümkün hale geldi ( İlgi Bölgesi, ilk kez 1995'te böyle bir mekanizma önerildi), niceleme tablosunda daha düşük değerler kullanılarak. Bunun için gerekli alan ayarlanır (örneğin, görüntüde yeni bir kanal şeklinde) ve Kalite öğesinin yanındaki maske simgesine basılır. Görünen pencerede, kaydırıcıları hareket ettirerek görüntüyü deneyebilirsiniz - bitmiş sonuç ekranda görüntülenerek kalite ve boyut arasında gerekli uzlaşmayı hızlı bir şekilde bulmanızı sağlar.

    Uzman dönüştürücüler ve görüntüleyenler

    Standart, sıkıştırma / açma yöntemlerinin belirli uygulamalarını belirtmediğinden, bu, sıkıştırma algoritmalarının üçüncü taraf geliştiricilerine yer bırakır. Gerçekten de, ya basitleştirilmiş bir dalga biçimi algoritması kullanabilir ve böylece sıkıştırma sürecini hızlandırabilir ya da tam tersine, daha karmaşık bir algoritma uygulayabilir ve buna göre büyük sistem kaynakları.

    Diğer şirketlerden özel çözümler, ticari geliştirmeler olarak mevcuttur. Bazıları ayrı programlar olarak uygulanır (Aware tarafından geliştirilen JPEG 2000), diğerleri en yaygın raster düzenleyiciler için eklenti modülleri olarak uygulanır (Pegasus Imaging tarafından geliştirilen ImagePress JPEG2000 ve LEAD Technologies'den LEAD JPEG2000 modülü). Geçmişlerine karşı, bu konuyla uzun süredir uğraşan LuraTech şirketi öne çıkıyor. LuraWave teknolojisini bağımsız ürün LuraWave SmartCompress'te (3. sürüm artık mevcut) tanıtıyor ve Photoshop, Paintshop, Photopaint için modüller sunuyor. Ayırt edici özellik- Daha yüksek hız birkaç megabayt boyutunda görüntülerle bile çalışır (neredeyse anında dönüştürme). Buna göre, bu modülün fiyatı en yüksek - 79 $.

    JPEG2000 görüntülerini tarayıcılarda görüntülemek için özel bir görüntüleyici modülü yüklemeniz gerekir (tüm geliştiriciler bunu ücretsiz olarak sunar). Herhangi bir eklenti gibi bir html belgesine görüntü eklemek, EMBED yapısını (ek parametrelerle birlikte) kullanmaya gelir. Örneğin, aşamalı görüntü aktarım yönteminin kullanılacağı anlamına gelir. Yani, örneğimizde (139 KB dosya), önce yalnızca 250 bayt aktarılır, buna dayanarak kaba bir görüntü oluşturulur, ardından 500 bayt yüklendikten sonra görüntü güncellenir (bu, LIMIT değerine kadar devam eder) ulaşmış).

    Daha iyi bir görüntü elde etmek istiyorsanız sağ tuş üzerinde açılan menüden İyileştir öğesini seçmeniz gerekmektedir (Şekil 9). Dört özgeçmiş için, görüntünün tamamı tamamen indirilecektir.

    9

    sonuçlar

    Yani, JPEG2000 nesnel olarak gösterir En iyi skorlar JPEG'den yalnızca yüksek sıkıştırma oranlarında. 10-20 kat sıkıştırma ile çok fark yoktur. Yaygın formatın yerini alabilecek mi yoksa basitçe rekabet edebilecek mi? Yakın gelecekte - çoğu durumda, JPEG tarafından sağlanan kalite / boyut oranı neredeyse kabul edilebilir. Ve JPEG2000'in görsel olarak aynı kalitede sağladığı %10-20'lik ek sıkıştırmanın popülaritesinde bir artışa yol açması pek olası değildir.

    Öte yandan, ışığa duyarlı matrislerin boyutu her yıl istikrarlı bir şekilde arttığından ve görüntüleri belleğe yerleştirmek giderek daha zor hale geldiğinden, dijital kamera şirketleri yeni formata büyük ilgi gösteriyor. Ve sonra yeni format daha yaygın hale gelecek ve kim bilir, belki bir süre sonra JPEG2000, JPEG'i yakalayacaktır. Her halükarda, Analog Micro Devices yakın zamanda sıkıştırma/açma işlemlerini gerçekleştiren özel bir çip çıkardı. yeni teknoloji donanım düzeyinde uygulandı ve ABD Savunma Bakanlığı, casus uydulardan alınan fotoğrafları kaydetmek için halihazırda aktif olarak yeni bir format kullanıyor.

    Gerçekler ve varsayımlar

    1. JPEG, dosyayı açarken ve yeniden kaydederken kalitesini kaybediyor.

    Doğru değil. Kalite yalnızca, görüntünün kaydedildiği orandan daha düşük bir sıkıştırma oranı seçildiğinde kaybolur.

    2. Bir dosyayı düzenlerken JPEG kalitesini kaybeder.

    Bu doğru mu. Değiştirilmiş bir dosyayı kaydettiğinizde, tüm dönüştürmeler yeniden gerçekleştirilir - bu nedenle sık sık görüntü düzenleme yapmaktan kaçının. Bu sadece dosya kapatıldığında geçerlidir; dosya açık kalırsa endişelenmenize gerek yok.

    3. Farklı programlarda aynı parametrelerle sıkıştırmanın sonucu aynı olacaktır.

    Doğru değil. Farklı programlar, kullanıcı tarafından girilen değerleri farklı şekillerde yorumlar. Örneğin, bir programda kaydedilen görüntünün kalitesi (örneğin Photoshop'ta olduğu gibi), diğerinde ise sıkıştırma derecesi (karşılıklı) belirtilir.

    4. Maksimum kaliteye ayarlandığında görüntü herhangi bir kalite kaybı olmadan kaydedilir.

    Doğru değil. JPEG her zaman kayıplarla sıkıştırır. Ancak, örneğin, %100 yerine %90 kalite ayarı, dosya boyutunun gözle algılanan kalite kaybından daha fazla küçülmesine neden olur.

    5. Herhangi bir JPEG dosyası, JPEG formatını anlayan herhangi bir düzenleyicide açılabilir.

    Doğru değil. Aşamalı JPEG, bazı düzenleyicilerin anlamadığı bir JPEG çeşididir.

    6. JPEG şeffaflığı desteklemez.

    Bu doğru mu. Bazen görüntünün bir kısmı şeffaf gibi görünebilir, ancak aslında rengi basitçe html sayfasındaki arka plan rengiyle eşleşecek şekilde seçilir.

    7. JPEG, GIF'ten daha iyi sıkıştırır.

    Doğru değil. Farklı uygulama alanlarına sahiptirler. Genel olarak, JPEG'e dönüştürüldükten sonra tipik bir "gif" resmi daha büyük bir hacme sahip olacaktır.

    JPEG2000 ve JPEG

    7
    1. JPEG2000 ve JPEG, yirmi ila otuz kat sıkıştırmada yaklaşık olarak aynı kaliteyi verir (bu arada, Photoshop sıkıştıramaz normal fotoğraf bu sınırın üzerinde).

    2. Daha yüksek sıkıştırma ile, JPEG2000'in kalitesi, 50 kata kadar çok fazla kayıp olmadan ve bazı kayıplarla (İnternet için resimlerden bahsediyoruz) - 100'e kadar ve hatta yukarı sıkıştırmanıza izin veren JPEG'den önemli ölçüde daha yüksektir. 200'e.

    3. Pürüzsüz bir renk değişiminin olduğu alanlardaki yüksek sıkıştırma oranlarında görüntü, basit bir JPEG'in blok yapısı özelliğini elde etmez. JPEG2000 ayrıca keskin kenarları biraz lekeliyor ve yuvarlatıyor - fotoğraflara bakın (Şek. 7 ve 8).

    Bir test dosyasının farklı sıkıştırma dereceleriyle (solda - Photoshop'ta kaydedilmiş) sıkıştırılmasının sonuçlarını gösterir. JPG formatı, sağda - JPEG2000 biçiminde). Şek. 7 sıkıştırma seviyesi 20, 40, 70 ve 145 seçildi (JPEG2000'de kaydederken açıkça belirtilebilirler), derece JPG sıkıştırma dosya boyutu JPEG2000 tarafından sıkıştırıldıktan sonra aynı olacak şekilde seçildi. Dedikleri gibi, sonuçlar geldi. Netlik için, daha keskin ayrıntılara sahip bir görüntü üzerinde (10, 20, 40 ve 80 sıkıştırma seviyeleriyle) ikinci bir deney gerçekleştirildi. Avantaj yine JPEG2000 tarafındadır (Şekil 8).

    8

    4. Aslında, farklı çözünürlükteki kopyalar tek bir JPEG2000 dosyasında saklandığından

    Böylece internette resim galerisi yapanlar için küçük resim oluşturmaya gerek kalmıyor.

    5. Bozulma olmadan sıkıştırma (kayıpsız mod) özellikle ilgi çekicidir. Böylece, Photoshop'tan LZW sıkıştırmalı test dosyası 827 KB aldı ve sıkıştırılmış JPEG2000 - 473 KB.

    6. JPEG ile karşılaştırıldığında, daha gelişmiş adaşı, önemli ölçüde daha fazla sistem kaynağı tüketir. Ancak son birkaç yılda önemli ölçüde artan bilgisayarların gücü, görüntü sıkıştırma sorunlarını yeni bir yöntemle başarılı bir şekilde çözmeyi mümkün kılıyor.

    7. Tarayıcılarda JPEG2000 desteğinin olmaması. Bu tür görüntüleri görüntülemek için oldukça büyük bir indirmeniz gerekir. ek modül(1,2 MB).

    8. Görüntüleri yeni formatta kaydetmek için ücretsiz yazılım eksikliği.

    Kamu malı dergiler.

    Aynı konuda:


    "Algoritmaların Uygulanması

    JPEG ve JPEG2000"

    Tamamlanmış:

    öğrenci grubu 819

    Ugarov Dmitry

    JPEG ve JPEG2000 Algoritmaları Nasıl Çalışır?

    1. JPEG algoritması

    JPEG (İngilizce Ortak Fotoğraf Uzmanları Grubu - fotoğrafçılık alanında ortak bir uzmanlar grubu) - fotoğrafik görüntüleri sıkıştırmak için yaygın olarak kullanılan bir yöntemdir. Sıkıştırılmış verileri içeren dosya formatına genellikle JPEG adı da denir; bu tür dosyalar için en yaygın uzantılar .jpeg, .jfif, .jpg, .JPG veya .JPE'dir. Ancak bunlardan .jpg, tüm platformlarda en popüler uzantıdır.

    JPEG algoritması bir sıkıştırma algoritmasıdır. kalite kaybı ile.

    uygulama alanı

    Biçim kayıplı bir sıkıştırma biçimidir, bu nedenle JPEG'in verileri kanal başına 8 bit (piksel başına 24 bit) olarak depoladığını varsaymak yanlıştır. Öte yandan, JPEG sıkıştırılmış ve sıkıştırılmış veriler kanal başına tipik olarak 8 bit olduğundan, bazen bu terminoloji kullanılır. Siyah beyaz gri tonlamalı görüntülerin sıkıştırılması da desteklenir.

    Bir JPEG dosyasını kaydederken, kalite derecesini ve dolayısıyla genellikle bazı geleneksel birimlerde, örneğin 1'den 100'e veya 1'den 10'a ayarlanan sıkıştırma derecesini belirtebilirsiniz. büyük sayı en iyi kaliteye karşılık gelir, ancak dosya boyutu artar. Genellikle 90 ile 100 arasındaki kalite farkı pratik olarak gözle algılanmaz. Bit bit geri yüklenen görüntünün her zaman orijinalinden farklı olduğu unutulmamalıdır. Yaygın bir yanılgı, JPEG kalitesinin saklanan bilgi miktarına eşit olduğudur.

    Kodlama aşamaları

    JPEG sıkıştırma işlemi birkaç adım içerir:

    1. Görüntüyü en uygun renk alanına dönüştürme;

    Luma/chrominance (YCbCr) renk uzayını kullanırken daha iyi bir sıkıştırma oranı elde edilir. Kodlamanın bu aşamasında ilgili ilişkileri kullanarak renk modeli RGB, YCbCr'ye dönüştürülür:

    Y = 0,299*R + 0,587*G + 0,114*B

    Cb = - 0,1687*R – 0,3313*G + 0,5*B

    Cr = 0,5*R – 0,4187*G – 0,0813*B.
    Kod çözme sırasında uygun ters dönüşüm kullanılabilir:
    R = Y + 1.402*Kr

    G = Y – 0,34414*Cb – 0,71414*Cr

    B = Y + 1.772*Cb.
    İnsan görme sistemindeki Y,Cb,Cr ile ilgili not:

    Göz, özellikle retina, görsel analizör olarak iki tür hücreye sahiptir: yalnızca grinin tonlarını (parlak beyazdan koyu siyaha) algılayan gece görüş hücreleri ve renk dağılımını algılayan gündüz görüş hücreleri. veren ilk hücreler RGB rengi, Y değerine benzer bir parlaklık seviyesi tespit edin Renk tonunun algılanmasından sorumlu diğer hücreler - renk farkıyla ilişkili değeri belirleyin.


    2. Piksel gruplarının ortalaması alınarak krominans bileşenlerinin alt örneklemesi;

    İnsan gözünün en hassas olduğu görsel bilgilerin çoğu, YCbCr renk uzayının yüksek frekanslı, gri tonlamalı parlaklık (Y) bileşenlerinden oluşur. Diğer iki renklilik bileşeni (Cb ve Cr), insan gözünün daha az duyarlı olduğu yüksek frekanslı renk bilgisi içerir. Bu nedenle, belirli bir kısmı atılabilir ve böylece renk kanalları için dikkate alınan piksel sayısını azaltmak mümkündür.

    1) 4:2:0 yazın (görüntü 2x2 piksellik karelere bölündüğünde ve bunların her birinde tüm pikseller alınır aynı değerler Cb ve Cr kanalları ve Y y parlaklığı her biri için kalır)

    2) 4:2:2 yazın (renklilik bileşenleriyle birleştirme yalnızca iki piksellik gruplar halinde yatay olarak gerçekleşir).

    3) 4:4:4 türü, her satırdaki her pikselin kendine özgü Y, Cb ve Cr bileşenleri değerine sahip olduğunu belirtir. (Şekil 1a)

    4) 4:2:2 yazın. Krominans sinyalini yatay olarak 2 çarpanı ile alt örnekleyerek, 4:4:4 YCbCr akışından 4:2:2 YCbCr akışı elde ederiz. "4: 2: 2" girişi, tek bir satırda 2 krominans değerine karşılık 4 parlaklık değeri olduğu anlamına gelir (bkz. Şekil 1 b). 4:2:2 YCbCr sinyali, 4:4:4 YCbCr sinyaline göre görüntü kalitesinde çok az kayıp verir, ancak gerekli bant genişliği orijinalin %33'ü kadar azalır.

    3. Görüntü verisi fazlalığını azaltmak için ayrık kosinüs dönüşümlerinin uygulanması;

    Algoritmanın ana aşaması, bir tür Fourier dönüşümü olan ayrık kosinüs dönüşümüdür (DCT veya DCT). Yalnızca sıkıştırma amacıyla değil, çeşitli amaçlarla görüntülerle çalışırken kullanılır. Piksel değerlerinin frekans temsiline geçiş, görüntüye farklı bir şekilde bakmamızı, onu işlememizi ve bizim için ilginç olanı sıkıştırmamızı sağlar. Ayrıca, dönüştürme katsayılarını bilerek, her zaman ters işlemi gerçekleştirebiliriz - orijinal görüntüyü döndürebiliriz.

    Bir görüntünün bir bloğuna (bizim durumumuzda 8x8 piksel) doğrudan uygulanan bir DCT şöyle görünür:

    nerede x, y - bir pikselin uzamsal koordinatları (0..7) ,

    f(x,y) - orijinal makro bloğun piksel değerleri (parlaklık diyelim)

    u,v - frekans gösterimindeki piksel koordinatları (0..7)

    u=0 için w(u) =1/KAREKÖK(2), aksi takdirde w(u)=1 (KAREKÖK kareköktür)

    v=0 için w(v) =1/SQRT(2), aksi halde w(v)=1

    Veya matris biçiminde:

    4. İnsan görsel algısı için optimize edilmiş ağırlık fonksiyonları kullanılarak DCT katsayılarının her bir bloğunun nicelenmesi;

    Ayrık kosinüs dönüşümü, bilgileri kayıplı sıkıştırma ve yuvarlama için hazırlar. Dönüştürülmekte olan matrisin her elemanı için, matrisin karşılık gelen bir elemanı vardır. niceleme. Ortaya çıkan matris, dönüştürülen matrisin her bir elemanının niceleme matrisinin karşılık gelen elemanına bölünmesi ve ardından sonucun en yakın tam sayıya yuvarlanmasıyla elde edilir. Niceleme matrisini derlerken, büyük öğeleri sol alt köşededir, böylece bunlara bölündüğünde, ayrık kosinüs dönüşümünden sonra bu köşedeki veriler (yalnızca yuvarlayanlar daha az acı verici olacaktır) daha kabaca yuvarlanır. Buna göre, kaybolan bilgiler bizim için kalanlardan daha az önemlidir.


    5. Aşama İkincil Sıkıştırma

    JPEG kodlayıcının son aşaması, ortaya çıkan matrisin kodlanmasıdır.

    5.1 64 DCT katsayısının zikzak permütasyonu

    Böylece, 8x8'lik bir değer bloğu üzerinde bir DCT dönüşümü gerçekleştirdikten sonra, yeni blok 8x8. Ardından, bu 8x8 blok şu şekilde zikzak şeklinde taranır:

    (8x8 bloğundaki sayılar, 2 boyutlu 8x8 matrisine baktığımız sırayı gösterir)

    0, 1, 5, 6,14,15,27,28,

    2, 4, 7,13,16,26,29,42,

    3, 8,12,17,25,30,41,43,

    9,11,18,24,31,40,44,53,

    10,19,23,32,39,45,52,54,

    20,22,33,38,46,51,55,60,

    21,34,37,47,50,56,59,61,

    35,36,48,49,57,58,62,63

    Gördüğünüz gibi önce sol üst köşe (0,0), ardından (0,1), ardından (1,0), ardından (2,0), (1,1), (0, 2), (0.3), (1.2), (2.1), (3.0), vb.

    8x8 matrisini zikzaklar çizdikten sonra, artık 64 katsayılı (0..63) bir vektörümüz var. Böylece, uzamsal frekans kriterlerine göre sıralanmış bir vektör elde ederiz: vektör üzerindeki ilk değer (indeks 0), görüntüdeki en düşük frekansa karşılık gelir - DC terimi ile gösterilir. Vektördeki indeksin artmasıyla, daha yüksek frekanslara karşılık gelen değerler elde ederiz (63 indeksli bir değer, genliğin genliğine karşılık gelir) yüksek frekans 8x8 blokta). DCT katsayılarının geri kalanı AC olarak gösterilir.

    5.2 RunLength sıfır kodlaması (RLE)

    Şimdi uzun bir sıfır dizisine sahip bir vektörümüz var. Bunu ardışık sıfırları kodlayarak kullanabiliriz. ÖNEMLİ: Nedenini daha sonra anlayacaksınız ama burada vektörün farklı şekilde kodlanan birinci katsayısının (DC katsayısı) kodlamasını atlıyoruz. Orijinal 64 vektörünü bir 63 vektörü olarak kabul edin (bu, ilk katsayısı olmayan 64 vektörüdür)

    Diyelim ki elimizde 57,45,0,0,0,0,23,0,-30,-16,0,0,1,0,0,0,0,0,0 var, sadece 0,... .0

    Burada - RLC gibi jpeg sıkıştırma Bu örnek için yapılan:

    (0,57); (0,45); (4.23); (1,-30); (0,-16); (2.1); EOB

    Görüldüğü gibi 0 dışındaki her değer için değerden önce ardışık PRIOR 0 sayısını kodlayıp değeri ekliyoruz. Başka bir not: EOB, Blok Sonu'nun kısa biçimidir ve özel kodlanmış bir değerdir (işaretleyici). Vektör üzerinde vektörün sonuna kadar sadece sıfırların olduğu bir konuma ulaştıysak, bu konumu EOB ile tahsis edeceğiz ve nicemlenmiş vektörün RLC sıkıştırmasını sonlandıracağız.

    [Kuantize edilmiş vektör sıfır sonlu değilse (0 olmayan bir son öğeye sahipse), bir EOB işaretçimiz olmayacağına dikkat edin.]

    (0,57); (0,45); (4,23); (1,-30); (0,-16); (2,1); (0,0)

    Başka bir TEMEL şey: Elimizdeki nicemlenmiş vektör üzerinde bir yerde diyelim:

    57, on sekiz sıfır, 3, 0.0,0.0 2, otuz üç sıfır, 895, EOB

    JPG Huffman kodlaması, baştaki sıfırların sayısının 4 bitlik bir değer olarak kodlanması gerektiği kısıtlamasını yapar - 15'i aşamaz.

    Bu nedenle, önceki örnek şu şekilde kodlanmalıdır:

    (0,57); (15,0) (2,3); (4,2); (15,0) (15,0) (1,895), (0,0)

    (15,0), ardışık 16 sıfırın ardından gelen değeri gösteren özel kodlu bir değerdir.

    5.3 Son adım - Huffman kodlaması

    Önce ÖNEMLİ bir not: Gerçek değeri depolamak yerine, JPEG standardı, minimum boyutu, bu değeri tutabileceğimiz bit cinsinden (buna o değerin kategorisi denir) ve ardından bunun bit kodlu bir gösterimini sakladığımızı belirtir. bunun gibi değer:

    7,..,-4,4,..,7 3 000,001,010,011,100,101,110,111

    15,..,-8,8,..,15 4 0000,..,0111,1000,..,1111

    31,..,-16,16,..,31 5 00000,..,01111,10000,..,11111

    63,..,-32,32,..,63 6 .

    127,..,-64,64,..,127 7 .

    255,..,-128,128,..,255 8 .

    511,..,-256,256,..,511 9 .

    1023,..,-512,512,..,1023 10 .

    2047,..,-1024,1024,..,2047 11 .

    4095,..,-2048,2048,..,4095 12 .

    8191,..,-4096,4096,..,8191 13 .

    16383,..,-8192,8192,..,16383 14 .

    32767,..,-16384,16384,..,32767 15 .

    Daha sonra, önceki örnek için:

    (0,57); (0,45); (4,23); (1,-30); (0,-8); (2,1); (0,0)

    (0,0) veya (eğer sahip olmamız gerekiyorsa) (15,0) gibi özel belirteçler olan çiftler dışında, bu çiftlerin yalnızca doğru değerini kodlayalım.

    45, benzer şekilde (6.101101) olarak kodlanır.

    30 -> (5,00001)

    Ve şimdi çift dizisini tekrar yazacağız:

    (0,6), 111001; (0,6), 101101; (4,5), 10111; (1,5), 00001; (0,4), 0111; (2,1), 1; (0,0)

    Parantez içine alınmış 2 değer çifti bir bayt içinde temsil edilebilir, çünkü aslında 2 değerin her biri 4 bitlik bir yığında temsil edilebilir (baştaki sıfır sayısı her zaman 15'ten azdır ve tıpkı kategori gibi) [kodlanmış sayılar JPG dosyası- -32767..32767 alanında]). Bu baytta, yüksek bit, baştaki sıfırların sayısını temsil eder ve düşük bit, 0 dışındaki yeni değerin kategorisini temsil eder.

    Son kodlama adımı, Huffman'ın bu baytı kodlaması ve ardından bir bit akışı olarak bir JPG dosyasına o baytın Huffman kodunu ve ardından bu sayının bit temsilini yazmasıdır.

    Örneğin, bayt 6 için ((0.6)'ya eşdeğer) Huffman kodumuz = 111000;

    21 = (1,5) - 11111110110

    4 = (0,4) - 1011

    33 = (2,1) - 11011

    0 = EOB= (0,0) - 1010

    Önceki örnek için JPG dosyasında diske yazılan son bit akışı 63 katsayıdır (ilk katsayıyı atladığımızı unutmayın) -

    111000 111001 111000 101101 1111111110011001 10111 11111110110 00001

    1011 0111 11011 1 1010
    Avantajlar ve dezavantajlar

    Biçimin dezavantajları, güçlü sıkıştırma oranlarında, blok veri yapısının kendini hissettirmesi, görüntünün "karelere bölünmesi" (her biri 8x8 piksel boyutunda) gerçeğini içerir. Bu etki, özellikle düşük uzamsal frekansa sahip alanlarda belirgindir ( pürüzsüz geçişler açık gökyüzü gibi görüntüler). Yüksek uzamsal frekansa sahip alanlarda (örneğin, görüntünün zıt kenarları), karakteristik "yapılar" ortaya çıkar - bozuk renk ve / veya parlaklığa sahip piksellerin düzensiz bir yapısı. Ayrıca küçük renk detayları görüntüden kayboluyor. Şunu da unutmamak gerekir ki verilen formatşeffaflığı desteklemez.

    Bununla birlikte, eksikliklerine rağmen JPEG, piyasaya sürüldüğü sırada mevcut olan alternatiflere göre yüksek sıkıştırma oranı nedeniyle çok yaygınlaştı.

    2. JPEG2000 algoritması

    JPEG-2000 algoritması, JPEG ile aynı fotoğraf uzmanları grubu tarafından geliştirilmiştir. JPEG'in uluslararası bir standart olarak oluşumu 1992'de tamamlandı. 1997'de, 2000 kışında kesinleşen yeni, daha esnek ve güçlü bir standarda ihtiyaç olduğu anlaşıldı.

    JPEG 2000'deki algoritma ile JPEG'deki algoritma arasındaki temel farklar aşağıdaki gibidir:

    1) Güçlü bir sıkıştırma oranıyla daha iyi görüntü kalitesi. Veya aynı olan, yüksek sıkıştırma oranları için aynı kalitede büyük bir sıkıştırma oranı. Gerçekte bu, çoğu site tarafından kullanılan "Web kalitesinde" grafiklerin boyutunda gözle görülür bir azalma anlamına gelir.

    2) ile bireysel alan kodlamasını destekleyin en iyi kalite. Görüntünün belirli alanlarının (örneğin, bir fotoğraftaki gözler) insan algısı için kritik olduğu, diğerlerinin kalitesinden (örneğin, arka plan) feda edilebileceği bilinmektedir. "Manuel" optimizasyon ile sıkıştırma oranındaki artış, görüntünün bazı önemli kısımlarında kalite kaybolana kadar gerçekleştirilir. Artık kritik alanlarda kaliteyi ayarlamak, geri kalan alanları daha güçlü bir şekilde sıkıştırmak mümkün hale geliyor, örn. sübjektif olarak eşit görüntü kalitesiyle daha da yüksek bir son sıkıştırma oranı elde ediyoruz.

    3)Ana sıkıştırma algoritması dalgacık ile değiştirildi. Sıkıştırma oranındaki yukarıdaki artışa ek olarak bu, sıkıştırma oranı arttığında ortaya çıkan 8 piksellik blokajı ortadan kaldırdı. Ek olarak, görüntünün sorunsuz gelişimi artık doğası gereği standarttır (İnternette aktif olarak kullanılan Aşamalı JPEG, JPEG'den çok daha sonra ortaya çıktı).

    4) Sıkıştırma oranını artırmak için algoritma aritmetik sıkıştırma kullanır. JPEG standardı başlangıçta aritmetik sıkıştırmayı da içeriyordu, ancak daha sonra aritmetik sıkıştırma patentlerle korunduğu için bunun yerini daha az verimli Huffman sıkıştırması aldı. Şimdi ana patentin süresi doldu ve algoritmayı geliştirmek için bir fırsat var.

    5)Kayıpsız sıkıştırmayı destekler. Her zamanki kayıplı sıkıştırmaya ek olarak, yeni JPEG artık kayıpsız sıkıştırmayı da destekleyecektir. Böylece, tıbbi görüntüleri sıkıştırmak için baskıda, OCR sistemleri vb. tarafından tanınmak için metin kaydederken JPEG kullanmak mümkün hale gelir.

    6) Tek bitlik (2 renkli) görüntülerin sıkıştırılmasını destekler. Tek bitlik görüntülerin (mürekkep çizimleri, taranmış metin vb.) JPEG'de, sıkıştırıldığında, 1 bitlik bir resim 8 bitlik bir resme indirgenmiştir, yani. 8 kat arttı, ardından sıkıştırma girişiminde bulunuldu, genellikle 8 kattan az. Artık JPEG 2000'i evrensel bir algoritma olarak önerebiliriz.

    7)Şeffaflık, biçim düzeyinde desteklenir. Artık sadece GIF'te değil, JPEG 2000'de WWW sayfaları oluştururken arka planı sorunsuz bir şekilde kaplamak mümkün olacak. Ek olarak, yalnızca 1 bit şeffaflık desteklenmez (bir piksel şeffaf / opaktır), ancak ayrı bir kanal desteklenir, bu, opak bir görüntüden şeffaf bir arka plana yumuşak bir geçiş ayarlamanıza olanak tanır.

    Ek olarak, biçim düzeyi, görüntüye telif hakkı bilgilerinin dahil edilmesini, iletim ve yayın sırasında bit hatası direnci desteğini destekler, sıkıştırmayı açma veya işleme için harici araçlar (eklentiler) talep edebilir, açıklamasını, arama bilgilerini dahil edebilirsiniz. vb.

    Kodlama aşamaları

    JPEG2000 şemasına göre sıkıştırma işlemi birkaç adım içerir:

    1. Görüntüyü en uygun renk alanına dönüştürme.
    Bu kodlama aşamasında uygun oranlar kullanılarak RGB renk modeli YUV'ye dönüştürülür:

    Sıkıştırılmış haldeyken, karşılık gelen ters dönüşüm uygulanır:

    2. Ayrık dalgacık dönüşüm.

    Ayrık dalgacık dönüşümü (DWT) de iki tip olabilir - kayıplı sıkıştırma ve kayıpsız sıkıştırma için.

    Tek boyutlu durumdaki bu dönüşüm, karşılık gelen katsayıların ve değer dizisinin skaler ürünüdür. Ama beri birçok katsayı sıfırdır, o zaman doğrudan ve ters dalgacık dönüşümleri aşağıdaki formüllerle yazılabilir (çizginin uç elemanlarını dönüştürmek için, değerleri ile simetrik olan her yönde 2 piksel uzantısı kullanılır. çizginin öğelerinin aşırı piksellerine göre değerleri):
    y(2*n + 1) = x(2*n + 1) - (int)(x(2*n) + x(2*n + 2)) / 2

    y(2*n) = x(2*n) + (int)(y(2*n - 1) + y(2*n + 1) + 2) / 4

    ve tersi

    x(2*n) = y(2*n) - (int)(y(2*n - 1) + y(2*n + 1) + 2) / 4

    x(2*n + 1) = y(2*n + 1) + (int)(x(2*n) + x(2*n + 2)) / 2.

    3. Katsayıların kuantizasyonu.

    JPEG algoritmasında olduğu gibi, bir görüntüyü JPEG2000 formatında kodlarken niceleme kullanılır. Ayrık dalgacık dönüşümü, analogu gibi, katsayıları frekansa göre sıralar. Ancak JPEG'den farklı olarak, yeni formatta niceleme matrisi görüntünün tamamı için aynıdır.


    4. İkincil Sıkıştırma Aşaması

    . JPEG'de olduğu gibi, yeni formatta da sıkıştırma algoritmasındaki son adım kayıpsız kodlamadır. Ancak, önceki formattan farklı olarak, JPEG2000 bir aritmetik sıkıştırma algoritması kullanır.

    Yazılım uygulaması

    Bu yazıda, JPEG ve JPEG2000 algoritmaları uygulanmaktadır. Her iki algoritma da doğrudan ve ters kodlama uygular (ikincil sıkıştırmanın son aşaması yoktur). DCT'nin "doğrudan" hesaplanması nedeniyle JPEG'in hesaplanması oldukça uzun zaman alır (yaklaşık 30 saniye). İşin hızını arttırmanız gerekiyorsa, başlangıçta DCT matrisini hesaplamanız gerekir (DCT sınıfında değişiklikler yapın).

    Programa bir göz atalım:


    1. Başlattıktan sonra, bir pencere açılır

    ve düğmeye (2) basarak ve diyalog kutusuna istediğiniz adı girerek kaydedebilirsiniz.

  • Yeterince büyük bir Kalite Faktörü ile görüntü önemli ölçüde değişecektir. Bu bir JPEG algoritmasıysa, 8x8 bloklar telaffuz edilir (JPEG2000 algoritması durumunda, blok bölünmesi olmaz)
  • Önce:

    Sonrasında:



    JPEG, yeni ve oldukça güçlü algoritmalardan biridir. Tam renkli görüntüler için pratikte fiili standarttır. Algoritma, parlaklık ve rengin nispeten sorunsuz değiştiği 8x8 alanlarla çalışır. Sonuç olarak, böyle bir alanın matrisini kosinüs cinsinden çift sıra halinde ayrıştırırken (aşağıdaki formüllere bakın), yalnızca ilk katsayılar önemlidir, bu nedenle, görüntüdeki değişen renklerin düzgünlüğü nedeniyle JPEG'de sıkıştırma gerçekleştirilir. .

    Algoritma, bir grup fotoğraf uzmanı tarafından özellikle 24 bit görüntüleri sıkıştırmak için geliştirildi. JPEG - Ortak Fotoğraf Uzman Grubu - ISO - Uluslararası Standardizasyon Örgütü içindeki bölüm. Algoritmanın adı ["jei" peg] olarak okunur. Genel olarak, algoritma, bazı yeni katsayı matrislerini elde etmek için görüntü matrisine uygulanan ayrı bir kosinüs dönüşümüne (bundan sonra - DCT olarak anılacaktır) dayanmaktadır. Orijinal görüntüyü elde etmek için ters bir dönüşüm uygulanır.

    DCT, görüntüyü belirli frekansların genliklerine ayrıştırır. Böylece, dönüştürürken, birçok katsayının sıfıra yakın veya sıfıra eşit olduğu bir matris elde ederiz. Ek olarak, insan görüşünün kusurlu olması nedeniyle, görüntü kalitesinde gözle görülür bir kayıp olmadan katsayılara daha kabaca yaklaşmak mümkündür.

    Bunun için katsayıların kuantizasyonu kullanılır. En basit durumda, bu sağa doğru bir aritmetik bitsel kaymadır. Bu dönüşüm, bilgilerin bir kısmını kaybeder, ancak daha büyük bir sıkıştırma derecesi elde edilebilir.

    Algoritma nasıl çalışır?

    Öyleyse, algoritmayı daha ayrıntılı olarak ele alalım (Şekil 2.1). Diyelim ki 24 bitlik bir görüntüyü sıkıştırıyoruz.


    Aşama 1. Görüntüyü, noktanın renginin kırmızı (Kırmızı), yeşil (Yeşil) ve mavi (Mavi) bileşenlerinden sorumlu bileşenlerle birlikte RGB renk uzayından YCrCb renk uzayına (bazen YUV olarak adlandırılır) çeviriyoruz.

    İçinde Y parlaklık bileşenidir ve Cr, Co renkten sorumlu bileşenlerdir (kromatik kırmızı ve kromatik mavi). İnsan gözünün renge, parlaklığa göre daha az duyarlı olması nedeniyle, Cr ve Co bileşenleri için dizileri yüksek kayıplarla ve buna bağlı olarak yüksek sıkıştırma oranlarıyla arşivlemek mümkün hale gelir.Böyle bir dönüşüm televizyonda uzun süredir kullanılmaktadır. Renkten sorumlu sinyallere daha dar bir frekans bandı tahsis edilir. Basitleştirilmiş, RGB renk uzayından YCrCb renk uzayına çeviri, geçiş matrisi kullanılarak temsil edilebilir:

    Adım 2 Orijinal görüntüyü 8x8 matrislere böldük. DCT çalışma matrislerini her bileşen için ayrı ayrı 3 - 8 bitten oluşturuyoruz. Daha yüksek sıkıştırma oranlarında bu adım biraz daha zor olabilir. Görüntü ilk durumda olduğu gibi Y bileşenine bölünür ve Cr ve Cb bileşenleri için satır ve sütun üzerinden matrisler yazılır. Yani, orijinal 16x16 matrisinden yalnızca bir çalışan DCT matrisi elde edilir. Bu durumda, görmesi kolay olduğu için 3/4 kaybederiz. kullanışlı bilgi görüntünün renk bileşenleri hakkında ve hemen 2 kat sıkıştırma elde ediyoruz. Bunu YCrCb uzayında çalışarak yapabiliriz. Uygulamada görüldüğü gibi, bu, ortaya çıkan RGB görüntüsünü fazla etkilemez.

    Aşama 3 Basitleştirilmiş bir biçimde, n=8 için DCT aşağıdaki gibi temsil edilebilir:

    nu,v] = ^Hc(i,u)xC(j,v)y

    rY)

    Yq= TamsayıYuvarlak

    Bu adımda sıkıştırma oranı kontrol edilir ve en büyük kayıplar meydana gelir. MC'yi büyük katsayılarla ayarlayarak daha fazla sıfır ve sonuç olarak daha büyük bir sıkıştırma oranı elde edeceğimiz açıktır.

    Algoritmanın özel etkileri de niceleme ile ilişkilidir. Gama katsayısının yüksek değerlerinde, düşük frekanslardaki kayıplar o kadar büyük olabilir ki, görüntü 8x8 karelere bölünür. Yüksek frekanslardaki kayıplar sözde kendini gösterebilir. Gibbs etkisi, keskin bir renk geçişi ile konturların etrafında bir tür "nimbus" oluştuğunda.

    Adım 5. 8x8 matrisini "zig-zag" tarama kullanarak 64 elemanlı bir vektöre dönüştürüyoruz, yani (0.0), (0.1), (1.0), (2.0 )...

    Böylece, vektörün başında, matrisin düşük frekanslara karşılık gelen katsayılarını ve sonunda - yüksek frekansları elde ederiz.

    Adım 6 Grup kodlama algoritmasını kullanarak vektörü evriştiriyoruz. Bu durumda, türden çiftler elde ederiz.<пропустить, число>, burada "atla" atlanacak sıfırların sayısıdır ve "sayı" bir sonraki hücreye koyulacak değerdir. Böylece, 42 3000-2 00001 ... vektörü (0.42) (0.3) (3,-2) (4,1) çiftlerine katlanır....

    Adım 7. Ortaya çıkan çiftleri Huffman kodlaması ile sabit bir tablo ile katlayın.

    Bu algoritmadaki görüntü yeniden oluşturma işlemi tamamen simetriktir. Yöntem, bazı görüntüleri ciddi kayıplar olmadan 10-15 kez sıkıştırmanıza olanak tanır.

    Algoritmanın önemli olumlu yönleri şunlardır:

    ■ sıkıştırma derecesi ayarlanmıştır;

    ■ Çıktı renkli görüntü, nokta başına 24 bit olabilir.

    Algoritmanın dezavantajları şunlardır:

    ■ Sıkıştırma oranını artırmak, görüntüyü ayrı karelere (8x8) böler. Bunun nedeni, niceleme sırasında düşük frekanslarda büyük kayıpların meydana gelmesi ve orijinal verileri geri yüklemenin imkansız hale gelmesidir.

    ■ Keskin renk geçişlerinin sınırları boyunca Gibbs-halo efekti görünür.

    Daha önce de belirtildiği gibi, JPEG nispeten yakın bir zamanda - 1991'de standartlaştırıldı. Ancak o zaman bile, daha az kalite kaybıyla daha güçlü sıkıştıran algoritmalar vardı. Gerçek şu ki, standardın geliştiricilerinin eylemleri, o sırada var olan teknolojinin gücüyle sınırlıydı. Yani, bir bilgisayarda bile, algoritmanın ortalama bir görüntü üzerinde bir dakikadan daha az çalışması gerekiyordu ve donanım uygulaması nispeten basit ve ucuz olmalıydı. Algoritmanın simetrik olması gerekiyordu (açma süresi yaklaşık olarak arşivleme süresine eşittir).

    Son şartın yerine getirilmesi, 8-256 MB flash kartta 24 bit fotoğraf çeken dijital kamera gibi cihazların ortaya çıkmasını sağladı." Daha sonra bu kart, dizüstü bilgisayarınızın yuvasına takılır ve ilgili program, görselleri okuyun. doğru değil Hayır, algoritma asimetrik olsaydı, cihazın "yeniden şarj olmasına" - görüntüyü sıkıştırmasına kadar uzun süre beklemek tatsız olurdu.

    JPEG'in çok hoş olmayan bir özelliği de O, genellikle ekrandaki yatay ve dikey şeritler tamamen görünmezdir ve yalnızca hareli desen şeklinde yazdırıldığında görünebilir. Görüntünün yatay ve dikey şeritlerine eğik bir baskı deseni uygulandığında oluşur. Bu sürprizler nedeniyle, JPEG değil aktif olarak tavsiye edilir baskı endüstrisinde kullanım, niceleme matrisinin yüksek katsayılarını belirleme. Bununla birlikte, insan tarafından izlenmesi amaçlanan görüntüleri arşivlerken, şu anda vazgeçilmezdir.

    geniş JPEG kullanımı, belki de yalnızca 24 bitlik görüntülerle çalıştığı gerçeği nedeniyle uzun süre ertelendi. Bu nedenle, 256 renk paletinde geleneksel bir monitörde kabul edilebilir kalitede bir resim görüntülemek için uygun algoritmaların kullanılması ve dolayısıyla belirli bir süre gerekiyordu. Oyunlar gibi seçici bir kullanıcıyı hedefleyen uygulamalarda bu tür gecikmeler kabul edilemez. Ek olarak, örneğin 8 bit GIF biçiminde, 24 bit JPEG'e dönüştürülmüş ve ardından görüntülemek için tekrar GIF'e dönüştürülmüş resimleriniz varsa, her iki dönüştürmede de kalite kaybı iki kez meydana gelir. Bununla birlikte, arşiv boyutlarındaki kazanç genellikle o kadar büyüktür (3-20 kat) ve kalitedeki kayıp o kadar küçüktür ki, görüntüleri JPEG formatında depolamak çok verimlidir.

    Bu algoritmanın modifikasyonları hakkında birkaç söz söylenmelidir. JPEG bir ISO standardı olmasına rağmen, dosya formatı sabitlenmemiştir. Üreticiler bunu kullanarak kendi uyumsuz formatlarını oluştururlar ve bu nedenle algoritmayı değiştirebilirler. Böylece, ISO tarafından önerilen algoritmanın dahili tabloları kendi tablolarıyla değiştirilir. Ek olarak, kayıp derecesi ayarlanırken hafif bir karışıklık var. Örneğin, test ederken "mükemmel" kalite, "% 100" ve "10 puan" ın önemli ölçüde farklı resimler verdiği ortaya çıktı. Aynı zamanda "%100" kalite, kayıpsız sıkıştırma anlamına gelmez. Belirli uygulamalar için JPEG varyantları da vardır.

    ISO Standardı JPEG, bilgisayar ağlarında görüntü alışverişinde nasıl giderek daha yaygın bir şekilde kullanılmaya başlıyor. JPEG algoritması Quick Time, PostScript Level 2, Tiff 6.0 formatlarında desteklenmektedir ve şu anda multimedya sistemlerinde önemli bir yer tutmaktadır.

    JPEG algoritmasının özellikleri: o ! Şş. ,. Sıkıştırma oranı: 2-200 (kullanıcı tarafından ayarlanır). ,C, :_,. . Görüntü sınıfı: tam renkli 2jj.bit görüntüleri veya iso | Keskin renk geçişleri olmadan gri tonlamalı fermantasyon ^ o &, (fotoğraflar).

    Simetri: 1.

    Özellikler: bazı durumlarda algoritma oluşturur! bir görüntüdeki keskin yatay ve dikey kenarların çevresinde hale (Gibbs etkisi). Ek olarak, yüksek derecede sıkıştırma iso-! Görüntü 8x8 piksellik bloklara bölünmüştür.