Saya mencoba untuk belajar lebih banyak tentang kompresi gambar menggunakan metode transformasi wavelet. Pertanyaan saya adalah: Ada apa dengan wavelet tertentu yang membuatnya lebih disukai saat mengompres gambar? Apakah mereka lebih mudah untuk dihitung? Apakah mereka menghasilkan gambar yang lebih halus? Dll ...
Contoh: JPEG 2000 menggunakan Cohen-Daubechies-Feauveau 9/7 Wavelet ... mengapa yang ini?
image-processing
wavelet
pengguna807566
sumber
sumber
Jawaban:
Ikhtisar
Jawaban singkatnya adalah bahwa mereka memiliki jumlah maksimum
vanishing moments
untuk diberikansupport
(yaitu jumlah koefisien filter). Itulah properti "ekstrem" yang membedakan wavelet Daubechies secara umum. Secara longgar, momen yang lebih hilang menunjukkan kompresi yang lebih baik, dan dukungan yang lebih kecil menyiratkan komputasi yang lebih sedikit. Faktanya, pertukaran antara momen menghilang dan ukuran filter sangat penting sehingga mendominasi cara wavelet dinamai. Misalnya, Anda akan sering melihatD4
wavelet yang disebut sebagaiD4
ataudb2
. The4
mengacu pada jumlah koefisien, dan2
mengacu pada jumlah momen hilang. Keduanya merujuk pada objek matematika yang sama. Di bawah ini, saya akan menjelaskan lebih lanjut tentang momen apa (dan mengapa kita ingin menghilangkannya), tetapi untuk sekarang, cukup pahami bahwa itu berkaitan dengan seberapa baik kita dapat "melipat" sebagian besar informasi dalam sinyal menjadi lebih kecil. jumlah nilai. Kompresi lossy dicapai dengan menjaga nilai-nilai itu, dan membuang yang lain.Sekarang, Anda mungkin telah memperhatikan bahwa
CDF 9/7
, yang digunakan dalamJPEG 2000
, memiliki dua angka dalam nama, bukan satu. Bahkan, itu juga disebut sebagaibior 4.4
. Itu karena itu bukan wavelet diskrit "standar" sama sekali. Bahkan, secara teknis bahkan tidak menghemat energi dalam sinyal, dan properti itulah yang menjadi alasan utama mengapa orang begitu bersemangat dengan DWT! Angka-angka,9/7
dan4.4
, masing-masing masih mengacu pada momen pendukung dan menghilang, tetapi sekarang ada dua set koefisien yang menentukan wavelet. Istilah teknis adalah bahwa bukannyaorthogonal
, merekabiorthogonal
. Daripada terlalu mendalam tentang apa artinya secara matematis, sayaJPEG 2000
Diskusi yang jauh lebih rinci tentang keputusan desain seputar gelombang wavelet CDF 9/7 dapat ditemukan dalam makalah berikut:
Saya hanya akan mengulas poin-poin utama di sini.
Cukup sering, wavelet Daubechies ortogonal benar-benar dapat mengakibatkan peningkatan jumlah nilai yang diperlukan untuk mewakili sinyal. Efeknya disebut
coefficient expansion
. Jika kita melakukan kompresi lossy yang mungkin atau mungkin tidak masalah (karena kita toh membuang nilai pada akhirnya), tapi itu pasti tampak kontraproduktif dalam konteks kompresi. Salah satu cara untuk menyelesaikan masalah adalah memperlakukan sinyal input sebagai periodik.Hanya memperlakukan input sebagai hasil berkala dalam diskontinuitas di bagian tepi, yang lebih sulit untuk dikompresi, dan hanya artefak dari transformasi. Misalnya, perhatikan lompatan dari 3 ke 0 dalam ekstensi periodik berikut: . Untuk mengatasi masalah itu, kita dapat menggunakan ekstensi periodik simetris dari sinyal, sebagai berikut: . Menghilangkan lompatan di tepian adalah salah satu alasan Discrete Cosine Transform (DCT) digunakan sebagai pengganti DFT dalam JPEG. Mewakili sebuah sinyal dengan cosinus secara implisit mengasumsikan "pengulangan dari depan ke belakang" dari sinyal input, jadi kami menginginkan wavelet yang memiliki properti simetri yang sama.[ 0 , 1 , 2 , 3 ] → [ . . . , 0 , 1 , 2 , 3 , 3 , 2 , 1[ 0 , 1 , 2 , 3 ] → [ . . 0,0 , 1 , 2 , 3 , 0 , 1 , 2 , 3 , . . . ] [ 0 , 1 , 2 , 3 ] → [ . . . , 0 , 1 , 2 , 3 , 3 , 2 , 1 , 0 , 0 , 1 ... ]
Sayangnya, satu-satunya wavelet ortogonal yang memiliki karakteristik yang diperlukan adalah wavelet Haar (atau D2, db1), yang hanya sebagai satu momen menghilang. Ugh. Itu membawa kita ke gelombang biorthogonal, yang sebenarnya merupakan representasi berlebihan, dan karenanya tidak menghemat energi. Alasan mengapa gelombang-gelombang CDF 9/7 digunakan dalam praktik adalah karena gelombang-gelombang itu dirancang untuk mendekati pengawetan energi. Mereka juga telah diuji dengan baik dalam praktik.
Ada cara lain untuk memecahkan berbagai masalah (disebutkan secara singkat di koran), tetapi ini adalah stroke luas dari faktor-faktor yang terlibat.
Momen Hilang
Jadi, apa momennya, dan mengapa kita peduli dengan mereka? Sinyal halus dapat didekati dengan baik oleh polinomial, yaitu fungsi dari bentuk:
Momen suatu fungsi (yaitu sinyal) adalah ukuran seberapa miripnya dengan kekuatan yang diberikan x. Secara matematis, ini dinyatakan sebagai produk dalam antara fungsi dan kekuatan x. Saat menghilang berarti produk dalam adalah nol, dan oleh karena itu fungsinya tidak "menyerupai" kekuatan x, sebagai berikut (untuk kasus kontinu):
Sekarang masing-masing diskrit, ortogonal wavelet memiliki dua filter FIR yang terkait dengannya, yang digunakan dalam DWT . Salah satunya adalah filter lowpass (atau penskalaan) , dan yang lainnya adalah filter highpass (atau wavelet)ψϕ ψ . Terminologi itu tampaknya agak berbeda, tetapi itulah yang akan saya gunakan di sini. Pada setiap tahap DWT, filter highpass digunakan untuk "mengupas" lapisan detail, dan filter lowpass menghasilkan versi sinyal yang dihaluskan tanpa detail itu. Jika filter jalan pintas memiliki momen hilang, momen-momen tersebut (yaitu fitur polinomial orde rendah) akan dimasukkan ke dalam sinyal halus yang saling melengkapi, alih-alih sinyal detail. Dalam kasus kompresi lossy, semoga sinyal detail tidak memiliki banyak informasi di dalamnya, dan oleh karena itu kita dapat membuang sebagian besar darinya.
Berikut adalah contoh sederhana menggunakan wavelet Haar (D2). Biasanya ada faktor penskalaan terlibat, tapi saya mengabaikannya di sini untuk mengilustrasikan konsep tersebut. Kedua filter tersebut adalah sebagai berikut: ϕ=[1,1]1 / 2-√
Filter highpass menghilang untuk momen ke-0, yaitu , oleh karena itu memiliki satu momen hilang. Untuk melihatnya, perhatikan sinyal konstan ini: . Sekarang secara intuitif, seharusnya jelas bahwa tidak ada banyak informasi di sana (atau dalam sinyal konstan). Kita bisa menggambarkan hal yang sama dengan mengatakan "empat berpasangan". DWT memberi kita cara untuk menggambarkan intuisi itu secara eksplisit. Inilah yang terjadi selama satu pass DWT menggunakan wavelet Haar:[ 2 , 2 , 2 , 2 ]x0= 1 [ 2 , 2 , 2 , 2 ]
Dan apa yang terjadi pada pass kedua, yang beroperasi hanya pada sinyal yang dihaluskan:
Perhatikan bagaimana sinyal konstan sama sekali tidak terlihat oleh lintasan detail (yang semuanya keluar menjadi 0). Juga perhatikan bagaimana empat nilai telah direduksi menjadi nilai tunggal . Sekarang jika kita ingin mengirimkan sinyal asli, kita bisa mengirim , dan DWT Inverse dapat merekonstruksi sinyal asli dengan mengasumsikan bahwa semua koefisien detail adalah nol. Wavelet dengan momen menghilang yang lebih tinggi memungkinkan hasil yang sama dengan sinyal yang diperkirakan dengan baik oleh garis, parabola, kubik, dll8 82 8 8
Bacaan lebih lanjut
Saya membahas banyak detail untuk membuat perawatan di atas dapat diakses. Makalah berikut memiliki analisis yang lebih dalam:
Catatan kaki
Makalah di atas tampaknya menunjukkan bahwa wavelet JPEG2000 disebut Daubechies 9/7, dan berbeda dari wavelet CDF 9/7.
Draf standar JPEG2000 ( tautan pdf ) yang saya telusuri juga menyebut filter resmi Daubechies 9/7. Ini referensi makalah ini:
Saya belum membaca salah satu dari sumber-sumber itu, jadi saya tidak bisa mengatakan dengan pasti mengapa Wikipedia menyebut JPEG2000 wavelet CDF 9/7. Sepertinya mungkin ada perbedaan antara keduanya, tetapi orang-orang tetap memanggil resmi CDEG 9/7 JPEG2000 (karena didasarkan pada fondasi yang sama?). Terlepas dari namanya, kertas oleh Usevitch menjelaskan yang digunakan dalam standar.
sumber
Kebaikan transformasi sinyal dievaluasi pada dua metrik yang berbeda: kompresi, dan dalam kasus kompresi lossy, kualitas. Kompresi didefinisikan oleh pemadatan energi tetapi kualitas lebih sulit.
Secara tradisional, kualitas diukur dengan error mean-square atau SNR rata-rata per-pixel. Namun, manusia tidak cenderung mengevaluasi sinyal dengan MSE atau SNR. Manusia sangat sensitif terhadap kebisingan yang terstruktur di mana MSE cenderung tidak. Mengembangkan algoritma yang memberikan metrik kualitas mirip manusia adalah bidang penelitian yang aktif. Indeks Structural SIMilarity (SSIM) Bovik adalah tempat yang baik untuk memulai.
sumber
Sebagai jawaban yang sangat singkat - transformasi apa pun lebih baik daripada transformasi lainnya jika ada, yang dikenal sebagai "properti Pemadatan energi" yang dijelaskan sebagai berikut:
"ketika hanya sebagian kecil dari koefisien transformasi memiliki besaran besar sehingga menjaga hanya beberapa co-efisien dan membuang atau mengukur yang lain masih memungkinkan pembangunan kembali sudah hampir sempurna". Properti semacam itu terkait dengan kemampuan dekorasi dari transformasi kesatuan. "
Transformasi dengan properti pemadatan energi yang lebih rendah adalah yang membutuhkan jumlah simbol terkecil dan karenanya bit yang lebih sedikit.
Transformasi dengan properti pemadatan energi tertinggi adalah DCT.
Dipan.
sumber
Gambar alami terdiri dari berbagai fitur gambar, kami dapat mengategorikannya secara luas menjadi fitur, tekstur, dan tepi yang lambat atau bervariasi. Metode kompresi yang baik adalah metode yang mengubah gambar menjadi domain di mana semua energi sinyal dikonservasi hanya dalam beberapa koefisien.
Transformasi fourier mencoba memperkirakan gambar menggunakan sinus dan cosinus. Sekarang sinus dan cosinus dapat mendekati sinyal halus dengan cukup singkat, tetapi sangat buruk untuk mendekati diskontinuitas. Jika Anda terbiasa dengan fenomena Gibbs, Anda akan tahu bahwa seseorang membutuhkan sejumlah besar koefisien fourier untuk menghindari artefak yang mendekati diskontinuitas dalam waktu. Namun, semakin kecil jumlah koefisien, semakin baik kompresi. Oleh karena itu, ada tradeoff yang inheren antara jumlah koefisien dan hilangnya metode kompresi, yang biasanya kita sebut sebagai tradeoff tingkat-distorsi.
Saat mencari skema kompresi yang lebih baik daripada jpeg, yang menggunakan transformasi fourier, kami membutuhkan transformasi yang dapat memperkirakan diskontinuitas dengan koefisien yang lebih sedikit daripada transformasi fourier, untuk distorsi yang sama. Masukkan wavelet yang menawarkan perkiraan yang lebih baik dan oleh karena itu kompresi singularitas titik yang lebih baik tanpa fenomena gibbs seperti artefak. Gambar tidak pernah benar-benar mulus dalam praktiknya dan karenanya wavelet lebih fleksibel daripada fourier untuk fitur gambar yang beragam. Jika kita membandingkan perkiraan k-term terbaik dari suatu gambar yang mengandung tepi menggunakan fourier dan wavelet, kesalahan akan meluruh sebagai dan k - 1k−2/3 k−1 masing-masing. Untuk jumlah istilah yang sama, kesalahan meluruh lebih cepat untuk wavelet. Ini berarti wavelet memiliki pemadatan energi yang lebih baik ketika gambar tidak sepenuhnya mulus (bervariasi perlahan) dan mengandung singularitas.
Namun, kami belum memiliki basis atau transformasi tunggal yang dapat mendekati fitur halus, titik singularitas, tepi dan tekstur.
sumber
DCT memiliki pemadatan energi yang sangat baik untuk banyak sinyal umum, dan juga menyatu dengan cukup baik dengan cara difraksi (proses fisik dasar dalam pencitraan) bekerja, karena difraksi dapat direpresentasikan sebagai kernel fourier. Ini memberi banyak keuntungan.
Masalahnya adalah bahwa koefisien DCT perlu didelokalisasi atas seluruh area transformasi. Untuk itu diperlukan banyak bidang transformasi kecil (blok) agar energi di satu area tidak tumpah ke area lain saat bertransformasi. Ini keduanya membatasi kemampuan transformasi menjadi energi kompak, dan juga memperkenalkan artefak di banyak batas blok.
Saya belum melakukan banyak hal dengan wavelet sehingga saya bisa salah, tetapi mereka lebih terdelokalisasi, dengan koefisien yang berbeda mewakili pengorbanan area / frekuensi yang berbeda. Ini memungkinkan ukuran blok yang lebih besar dengan artefak yang lebih sedikit. Tidak yakin dalam prakteknya berapa banyak perbedaan yang benar-benar membuat perbedaan.
sumber
Ketika berbicara tentang wavelet yang lebih baik, kita harus menganggap mereka memiliki encoder yang sama di belakang: kinerja transformasi sangat terkait dengan kuantisasi dan pengkodean. Kinerja biasanya adalah: kompresi yang lebih baik untuk kualitas yang sama, atau kualitas yang lebih baik untuk kompresi yang sama. Kompresi adalah ukuran yang mudah, kualitas tidak. Tapi misalkan kita punya satu.
Akhirnya, ini tergantung pada kelas gambar yang ingin Anda kompres: semua tujuan, atau fokus, seperti dengan gambar medis, atau kompresi data seismik, dengan jenis data tertentu yang terbatas? Di sini lagi, wavelet dapat berbeda.
Sekarang, apa saja komponen morfologis utama dari gambar, dan bagaimana wavelet menghadapinya:
Jadi di sisi analisis, wavelet terbaik bagus dan memadatkan fitur-fitur di atas secara global. Di sisi sintesis, wavelet terbaik mengurangi efek kompresi, misalnya kuantisasi, untuk memberikan aspek menyenangkan. Properti yang diperlukan pada analisis / sintesis sedikit berbeda, inilah mengapa wavelet biorthogonal bagus: Anda dapat memisahkan analisis (momen hilang) / properti sintesis (kehalusan), yang tidak dapat Anda lakukan dengan yang ortogonal, dan memicu peningkatan panjang filter , cukup merugikan kinerja komputasi. Tambahan, wavelet biorthogonal bisa simetris, bagus untuk ujungnya.
Akhirnya, apakah Anda ingin kompresi lossless? Maka Anda membutuhkan "integer" - seperti wavelet (atau binlets).
Dan semua hal di atas bercampur dengan masalah komputasi: wavelet yang dapat dipisahkan, tidak terlalu panjang. Dan proses standardisasi dalam komite JPEG.
Akhirnya, The 5/3 cukup bagus untuk lossless, cukup pendek. Beberapa dari 9/7 juga bagus. Jauh lebih baik daripada wavelet 13/7 ? Tidak juga, dan bahkan jika, itu ada di PSNR, bukan yang terbaik untuk kualitas gambar.
Jadi wavelet terbaik adalah kumis pergi, untuk gambar tradisional, dan komunikasi pribadi dengan penulis
buat saya percaya bahwa aspek "terbaik" dari 9/7 tidak sepenuhnya dijelaskan, juga tidak terjamin.
sumber