Bir JPEG oluştururken, eserlerin oluşumunu nasıl en aza indirebilirim?


10

JPEG görüntüler oluştururken dijital eserlere yol açıyor gibi görünen 2 ana faktör vardır : Örtüşme ve Sıkıştırma.

Misal:

Üzerinde karakter bulunan bir PNG'yi JPEG'ye dönüştürmek veya vektör görüntülerini bir fotoğrafın üzerine yerleştirmek kenarlarında pikselleşmeye neden olur. Kenar yumuşatma genellikle etraflarında bir tür bulanıklık oluşturur, ancak görüntü kayıplı sıkıştırılmışsa , ayrıntıların bir kısmı da kaybolur, bu nedenle bulanıklık ve pikselleşme daha az fark edilebilir hale gelebilir.

Bu yapılacak doğru şey mi? Kayıpsız bir sıkıştırma son derece ayrıntılı bir görüntü oluşturduğundan, diğer adlandırma işleminden kaynaklanan eserler daha belirgin olacaktır, bu nedenle görüntü kalitesinden ödün vermesine rağmen doğru sıkıştırma kullanılarak bir denge bulunabilir.

Düzenle

Bu JPEG'i mspaint'te (3.46KB) kaydettim:

kayıpsız

İşte maksimum sıkıştırma ile aynı JPEG (en düşük kalite, 0.5KB):

kayıplı

İşte% 50 sıkıştırma ile aynı JPEG (boyut farkına, 1.29KB'ye dikkat edin):

Yarım-no-seçenekleri

Aynı% 50 sıkıştırma ancak "aşamalı JPG" olarak kaydedildi, orijinal EXIF ​​ve XMP verilerini korudu ve "orijinal JPG kalitesiyle kaydetmeye çalıştı" (etrafında gri piksel olmadığını fark edebilirsiniz, 2.96KB):

Yarım seçenekleri

Ve nihayet eskisi gibi chroma alt örnekleme devre dışı (aynı dosya boyutu, 2.96KB):

Yarım-no-kroma


1
Sadece merak ediyorum, jpg istemenin nedeni nedir, daha küçük dosya boyutu mu? Özel durumunuza yardımcı olması durumunda, dxt sıkıştırma veya mesafe alanı dokularını biliyor musunuz?
Alan Wolfe

1
Sorunuzun ne olduğu bana açık değil. JPEG kullanarak sıkıştırmanın iyi olup olmadığını bilmek ister misiniz? JPEG ile ne tür görüntülerin iyi sıkıştırıldığını bilmek ister misiniz? Veya halihazırda JPEG mi kullanıyorsunuz ve JPEG'in neden olduğu eserleri en aza indirmek için resimlerinizi nasıl yazacağınızı bilmek ister misiniz?
Mokosha

@AlanWolfe Yalnızca JPEG (çoğunlukla web uygulamalarında) kullanabildiğim birkaç durumla karşılaştım ve bu yüzden JPEG'de olmasını istedim. Teşekkürler, ancak dxt sıkıştırma veya mesafe alan dokularına aşina değildim, wikipedia'da gördüklerimden , dxt algoritmaları JPEG'de kullanılanlardan farklı, JPEG oluşturmak için kullanılabilir mi?
Armfoot

@Moshoka teşekkürler, bu son sorunuzla daha ilgili: JPEG görüntülerdeki eserlerin getirdiği "görsel etki" nasıl en aza indirilir?
Armfoot

mozjpegkompresörün bu tür görüntülerde daha az bozulma üretmek için özel bir hile olduğunu unutmayın . (ve genel olarak jpeg yazarlarından daha etkilidir.) denediniz mi?
Görünen Ad

Yanıtlar:


9

JPEG sıkıştırma üç ana adımdan oluşur:

  1. Renk alt örneklemesi . Görüntü, RGB'den YCbCr renk uzayına dönüştürülür, burada luma veya parlaklık (Y), renk veya renk bileşenlerinden (Cb ve Cr ) ayrı olarak saklanır . Y bileşeni tam çözünürlükte tutulur, ancak Cb ve Cr, her eksende tipik olarak yarı çözünürlüğe kadar aşağı örneklenir. Bu, insan görsel sisteminin, parlaklığın ince ayrıntılarına renkten daha duyarlı olduğu gerçeğini kullanır.

  2. Frekans ölçümü. Y, Cb ve Cr görüntüleri, 8x8 bloğa bölünerek ve her bloğa ayrı kosinüs dönüşümü (Fourier dönüşümünün bir değişkeni) uygulanarak bir frekans gösterimine dönüştürülür. Sonuç, bloktaki farklı uzamsal frekansların genliklerini tanımlayan bir sayı matrisidir. Bu sayılar daha sonra nicelleştirilebilir (seçilen sayıda kesite yuvarlanır). Görsel sistemimizin yüksek frekanslara nispeten daha düşük hassasiyetinden yararlanarak, farklı frekanslar için farklı niceleme seviyeleri kullanılır. JPEG kodlayıcının kalite ayarı burada devreye girer: düşük kaliteler daha büyük nicemlemeyi kullanır.

  3. Entropi kodlaması . Nicelenmiş DCT değerleri, bir zip dosyası gibi daha yaygın değerleri temsil etmek için daha az bit kullanarak bit akışını kayıpsız bir şekilde sıkıştıran bir entropi kodlayıcıdan geçirilir.

Adım 1 ve 2 kayıplı olanlardır ve her biri kendi türlerini üretir (bazı örtüşme olsa da). Chroma alt örneklemesi, farklı renkteki bölgeler arasındaki keskin kenarları bulanıklaştırma eğilimindedir. Bu özellikle parlak renkli şekillerin kenarlarında kısır jagjiler topladığı vektör sanatında görülebilir. Frekans nicemlemesi genel olarak ince ayrıntıları bulanıklaştırır ve aynı zamanda düşük kalite ayarlarında blok şekilli artefaktlar oluşturur, çünkü DCT blok blok temelinde yapılır. Özellikle metinde görülür.

Bu nedenle JPEG genellikle vektör grafikleri veya metin içeren görüntüler için kullanılmaz; sıkıştırma algoritmaları, fotoğraflar ve karmaşık dokulu ve çok keskin olmayan kenarlara sahip diğer görüntüler için iyi çalışmasına rağmen, bu durumlar için çok uygun değildir.


Ayrıntılı açıklamalarınız için çok teşekkür ederim Nathan +1. Sıkıştırma algoritmalarının JPEG için sınırlamaları olduğunu anlıyorum, ancak sadece daha az fark yaratabilecek diğer seçeneklerle (kaydederken) sıkıştırma miktarının doğru bir dengesinin olup olmadığını öğrenmek istedim. Sorumu örneklerle düzenledim.
Armfoot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.