Renk Hücresi Sıkıştırma - Color Cell Compression

Renk Hücresi Sıkıştırma , 1986 yılında Campbell ve diğerleri tarafından geliştirilen ve S3 Doku Sıkıştırma ve Uyarlanabilir Ölçeklenebilir Doku Sıkıştırma gibi modern doku sıkıştırma algoritmalarının erken öncüsü olarak kabul edilebilecek kayıplı bir görüntü sıkıştırma algoritmasıdır . Bu, söz konusu pikselleri iki temsili renge bölmek için bir piksel bloğunun baskın parlaklığını kullanması bakımından Renk Hücresi Sıkıştırmasından önce gelen başka bir kayıplı görüntü sıkıştırma algoritması olan Blok Kesme Kodlaması ile yakından ilgilidir . Blok Kesme Kodlaması ve Renkli Hücre Sıkıştırma arasındaki temel fark, birincisinin gri tonlamalı görüntüleri sıkıştırmak için tasarlanmış olması ve ikincisinin renkli görüntüleri sıkıştırmak için tasarlanmış olmasıdır. Ayrıca, Blok Kesme Kodlaması, bir görüntüyü sıkıştırmak için bir bloktaki piksellerin renklerinin standart sapmasının hesaplanmasını gerektirirken, Renkli Hücre Sıkıştırması standart sapmayı kullanmaz. Bununla birlikte, her iki algoritma da bir görüntüyü piksel başına 2 bite kadar etkili bir şekilde sıkıştırabilir.

Çeşitli renklerin tasvir edildiği mandrillin yakından görünümü
Piksel renkli görüntü başına orijinal sıkıştırılmamış 24 bit
Yukarıdaki Mandrill standart test görüntüsünün sıkıştırılmış görüntüsü
CCC sıkıştırılmış görüntü, ancak piksel başına 2,875 bitlik parlaklık bitmap'iyle birlikte yalnızca 24 bit ila 15 bit renk nicemlemesi kullanarak (palet / arama tablosu olmadan)
Başlığa bakın
K-araç kümeleme kullanılarak oluşturulan palet ile piksel başına 2 bitlik CCC algoritmasının 256 giriş paleti / arama tablosu uygulaması
Başlığa bakın
Naif bir 15-bit renk histogram algoritması kullanılarak oluşturulan 256 giriş paleti / arama tablosu ile piksel başına 2 bitlik CCC algoritması ile sıkıştırılmış Mandrill standart test görüntüsünün çıktısının sonucu

Algoritma

Sıkıştırma

Renkli Hücre Sıkıştırma algoritması, bir görüntüyü sekiz adımda işler, ancak adımlardan biri (adım # 6) isteğe bağlıdır. Burada, orijinal günlük makalesinde varsayıldığı gibi, girdinin 24 bit / piksellik bir görüntü olduğu varsayılır, ancak diğer bit derinlikleri de kullanılabilir.

  1. Giriş görüntüsündeki her 24 bitlik renk değerinde bulunan her 8 bitlik RGB sekizli üçlü için NTSC parlaklığı aşağıdaki formül kullanılarak hesaplanır:
  2. Görüntü artık 4 piksele 4 piksellik bloklara bölünmüştür ve bloktaki her pikselin parlaklığının aritmetik ortalaması , temsili bir parlaklık değeri seçmek için kullanılır.
  3. Her piksel bloğu daha sonra iki gruba ayrılır. Bir grup, her pikselin parlaklığının mevcut bloğun temsili parlaklığından daha büyük veya ona eşit olduğu mevcut bloktaki piksellerden oluşur. İkinci piksel grubu, her pikselin parlaklığının mevcut bloğun temsili parlaklığından daha az olduğu mevcut bloktaki piksellerden oluşur. Mevcut bloktaki bir pikselin belirli bir gruba ait olup olmadığı, bir başka, ayrı, 16 girişli bitmap'te bir ikili "0" veya "1" değeriyle belirlenir .
  4. Artık iki aritmetik araç hesaplanarak her piksel bloğu için iki temsili 24 bit renk seçilir. Birinci aritmetik ortalama, her bir pikselin parlaklığının parlaklık bitmap'inde bir "1" olduğu birinci piksel grubuna ait olan tüm piksellerin aritmetik ortalamasıdır. İkinci 24 bitlik temsili renk, her pikselin parlaklık bitmap'inde bir "0" a karşılık geldiği ikinci gruptaki tüm 24 bit renkli piksellerin aritmetik ortalaması alınarak benzer şekilde seçilir.
  5. Parlaklık bit eşlem geçici bir konumda depolanır ve ardından geçerli blok için iki 24 bit temsili renk bit eşlemine eklenir. Bu aşamada, görüntü, eklenen iki 24 bitlik ikili değerle 16 girişli bir bit eşlem olarak sıkıştırılmıştır. Sıkıştırılmış bloğun toplam boyutu artık parlaklık bitmap için 16 bit ve her bir temsili renk için iki 24 bitlik ikili niceliktir ve 16'ya bölündüğünde (bloktaki piksel sayısı ), piksel başına 4 yani 4 bit verir.
  6. Her sıkıştırılmış piksel bloğu , iki 24 bitlik temsili rengin her birinin 15 bit olarak kesilmesiyle değiştirilir . Bu adım isteğe bağlıdır ve bu aşamadaki sıkıştırılmış bloklar, 16'ya bölündüğünde piksel başına 2.875 bit veren toplam bit boyutuna sahip olduğundan, istenirse algoritma bu noktada sona erebilir. Bu adım gerçekleştirilirse, daha küçük bir histogram oluşturmak için sonraki adımda 15 bitlik kesilmiş renk değerleri kullanılabilir. Ayrıca, her 15-bit ikili renk vektörü tahminen 16-bitlik bir kelimede saklandığından, o zaman 16ncı bit, iki arama tablosundan hangisinin kullanılması gerektiğini belirleyerek görüntü kalitesini iyileştirmek için kullanılabilir.
  7. Orijinal 24 bit renkli görüntüdeki veya kesilmiş 15 bit renk vektörlerindeki tüm 24 bitlik renklerin histogramı oluşturulur. Naif bir uygulamada, en sık kullanılan renklerden 256'sını seçmek için histograma başvurulur ve bunlar daha sonra 256 girişli bir diziye yerleştirilir; burada her giriş, piksel başına 24 bitlik üç sekizli renk değerinden oluşur. Piksel başına 24 bitlik orijinal renk görüntüsü için en uygun renkleri seçmenin histogram yöntemi, bunun yerine, genellikle daha iyi sonuçlar veren medyan kesme algoritması veya K-ortalama kümeleme gibi bir vektör niceleme sınıfı algoritması ile değiştirilebilir .
  8. Son adım, geçerli piksel bloğunu almaktan ve 256 girişli arama tablosundaki piksel başına 24 bit renginin, her blok için iki temsili renkle en yakın eşleştiğini belirlemekten oluşur. Arama tablosundaki renklere işaret eden iki 8-bitlik indeks artık 16-bit parlaklık bitmapine eklenmiştir. Bu , 16'ya bölündüğünde piksel başına 2 bit veren toplam sıkıştırılmış bit boyutu verir.

Baskıyı azaltma

Dekompresyon çok kolay ve anlaşılırdır. Sıkıştırılmış her 4 piksele 4 piksel bloğu yeniden yapılandırmak için, her blok için 16 bit parlaklık bitmapine başvurulur. Bit eşlemin bir elemanının 1 veya 0 olmasına bağlı olarak, arama tablosundaki iki 8-bitlik indekslerden biri seçilir ve daha sonra referansı kaldırılır ve karşılık gelen piksel başına 24-bit renk değeri alınır.


Performans ve görüntü kalitesi

Çok basit mekanizmasına rağmen, algoritma fotoğrafik görüntülerde şaşırtıcı derecede iyi sonuçlar verir ve sınırlı donanımla çok hızlı çözme avantajına sahiptir. Sıkıştırma oranında JPEG gibi daha sonraki blok dönüştürme kodlama yöntemleriyle çok aşılmasına rağmen , çok basit açma ve sıkıştırılmış görüntüye hızlı rastgele erişim avantajına sahiptir.

Ayrıca bakınız

Referanslar