2013-02-12 20 views
6

JPEG sıkıştırmasının kayıplı olduğunun farkındayım. I2 soru vardır:JPEG görüntüleri yeniden kodlayan bir idempotent işlemi mi?

Verilen bir işlem T:
1.

80 JPEG-gibi bir bayt tamponuna
3. kodlama verilen bayt tampon JPEG-80 görüntü
2. Okuma bu alın

Görsel kalite açısından idempotent bir işlem midir? Ya da T tekrarlanırken görüntünün kalitesi azalıyor mu? Aynı şey JPEG-XR kodeki için de geçerli mi?

Teşekkür ederiz!

Edit: Çakışan yanıtlar olduğundan, referanslar sağlayabilseydiniz harika olurdu!

+0

Emin değilim ama buna güvenmeyeceğim. Özellikle farklı motorlar arasında. Tek bir motorda bile, gerçekleşen yaklaşımlar iki kez uygulandığında aynı bölgeyle sonuçlanmayabilir. –

+1

Hayır derim. Her kodlamadan sonra jpeg, daha fazla 'kayıp' olacaktır. – leppie

cevap

1

Aynı ayarlarla aynı JPG sıkıştırma motorunu kullanıyorsanız, genellikle genel olarak uygun olacaktır. Bunun garanti edilip edilmediğini bilmiyorum ama bence çoğu uygulama bununla ilgileniyor. Java çalışma zamanı ile yapılan uygulamaların idempotent olduğu kesin. Tanım olarak

+0

WIC API'sini kullanıyorum: http://msdn.microsoft.com/en-us/library/windows/desktop/gg430027(v=vs.85).aspx – Sau

+0

Dave'in JPEG görüntüsünü yeniden kodlamayı denediğini varsayalım İlk önce bir bitmapi dönüştürerek, bu kanıt çok ikna edici değil. Ben API ile aşina değilim, ama ben Java JPEG kodlayıcı uygulamadan daha önce kodlama hatırlarsa bir JPEG görüntü yeniden * * not * yeterince * "akıllı" yeterli olduğunu şüpheleniyorum. Sonuçta, bir JPEG'in yeniden kodlanması tipik olarak arzu edilmez niteliktedir, bu nedenle API'nin, fonksiyonun potansiyel olarak yaygın bir şekilde kötüye kullanılmasına tolerans göstermesi mantıklı olacaktır. Ancak, kaputun altında ne olduğu hakkında net bir uyarı vermek durumundadır. ." – StockB

2

, kayıplı bir işlem (ideal olarak) son kullanıcı tarafından fark olmadığı bir şekilde temsilini basitleştirmek verileri siler. Bununla birlikte, kodlayıcının hangi piksellerin önemli olduğunu belirlemek için sihirli bir yöntemi yoktur ve bu yüzden de yapay olmalarına rağmen tüm pikselleri eşit olarak kodlarlar! Başka bir deyişle, kodlayıcı kayıp sıkıştırılmış görüntüyü kayıpsız bir görüntü ile aynı şekilde ele alacaktır. Kaybedilen görüntü daha da basitleştirilecek, böylece işlemdeki ek veriler atılacak, çünkü tüm kodlayıcılar için kullanıcı , eserleri temsil etmek için. İşte

JPEG nesil kaybının bazı örnekler:

http://vimeo.com/3750507

http://en.wikipedia.org/wiki/File:JPEG_Generarion_Loss_rotating_90_(stitch_of_0,100,200,500,900,2000_times).png

+3

Bu kadar basit değil. JPEG her zaman bilgi alamaz, onu nicelleştirir. Girdi verileri niceliksel verilere mükemmel şekilde uyuyorsa, hiç değişmeyecektir. Görüntüdeki renk sayısının azaltılmasına biraz benzer - eğer giriş görüntüsü zaten çok az renk içeriyorsa değişmez (JPEG'in renklerden ziyade DCT frekanslarında çalışması dışında). – Kornel

+0

Bu, Wikipedia'nın örneğinin görüntüyü neden 90 ° döndürdüğünü açıklar. Bunu bir cevap haline getirmelisiniz ya da benimki düzenleyeyim. – StockB

1

O garantili değil, ama oluyor olabilir. Özellikle kodlama -> kod çözme -> kodlama -> kodlama işlemini tekrarlamanız gerekiyorsa, sonuçta bir sabitleme noktasına yerleşecek ve kaliteyi daha fazla kaybetmeyecektir (aynı kaliteye ve aynı kodlayıcıya yapıştırdığınız sürece).

JPEG kodlama birkaç adımda yapılır :

  1. RGB YUV dönüştürme
  2. DCT (frekans etki alanına değişim)
  3. Nicemleme (DCT atmadan bit)
  4. kayıpsız sıkıştırma
  5. için

Ve kod çözme işlemi aynı işlemdir.

1 ve 2 numaralı adımlar yuvarlama hatalarına sahiptir (özellikle tamsayı kullanarak en iyi duruma getirilmiş kodlayıcılarda), böylece daha fazla kodlama ve kod çözme yuvarlama hatalarının küçük olması veya birbirini iptal etmesi için şanslı olmanız gerekir.

Büyük kayıp adımı olan 3. adım aslında idempotenttir. Kod çözülmüş pikselleriniz benzer DCT'ye dönüşürse, tekrar aynı veriyi nicelleştirin!

JPEG XR ayrıca YUV kullanır, bu nedenle bazı yuvarlama hataları yaşayabilir, ancak DCT yerine OTOH, yuvarlama hataları olmadan hesaplanabilen farklı bir dönüşüm kullanır, bu nedenle JPEG-XR'yi diğerlerine göre daha kolay gezdirmek gerekir biçimleri.

İlgili konular