فشردهسازی دادهها (Data Compression) فرایندی است که در آن دادهها به نحوی کدگذاری میشوند که فضای کمتری برای ذخیرهسازی یا انتقال آنها مورد نیاز باشد. این تکنیک بهویژه در حوزههایی نظیر ذخیرهسازی، انتقال داده در شبکه، مالتیمدیا، و اخیراً در یادگیری ماشین و بینایی ماشین اهمیت بالایی دارد. هدف اصلی کاهش افزونگی (redundancy) و بهینهسازی نمایش دادهها بدون از بین بردن اطلاعات ضروری است.
فشردهسازی بهعنوان یک ابزار بنیادین در مهندسی داده، بسته به نوع دادهی موردنظر
(textual, visual, audio, video, or sensory)
نیازمند تکنیکها و رویکردهای متفاوتی است. زیرا هر نوع داده ویژگیهای آماری، ساختاری و معنایی خاص خود را دارد که میتواند بر روشهای فشردهسازی مؤثر باشد.
· دارای ساختار خطی و مبتنی بر کاراکتر یا کلمات.
· فراوانی بالا از الگوها، عبارات تکراری، یا کلمات پرتکرار.
· حساس به تغییر حتی یک کاراکتر lossless الزامی است.
· Huffman Coding بر اساس فراوانی کاراکترها.
· Arithmetic Coding دقت بالاتر نسبت به هافمن.
· Lempel-Ziv (LZ77, LZ78, LZW) دیکشنریمحور؛ استفاده در ZIP، GIF.
· Burrows-Wheeler Transform (BWT): بازآرایی داده برای بهبود فشردهسازی.
· فشردهسازی محتوای ایمیلها، متون قانونی، کتابها یا فایلهای کد منبع.
· دادههای دوبعدی (2D)، حاوی ساختارهای فضایی و رنگی.
· ادراک انسانی (بینایی) نقش مهمی در پذیرش کیفیت دارد.
· اغلب lossy برای کاهش قابلتوجه حجم.
· JPEG مبتنی بر DCT، تقسیمبندی بلوکهای 8×8.
· JPEG2000 مبتنی بر DWT، کیفیت بالاتر، پیچیدگی بیشتر.
· WebP مدرنتر، ترکیبی از فشردهسازی intra-frame و inter-frame.
· Autoencoder-based Compression یادگیری بازنمایی نهفتهی تصویر.
· PSNR، SSIM، VIF برای سنجش کیفیت تصویری پس از فشردهسازی.
· دادههای یکبعدی زمانپایه (temporal)، با ویژگیهای طیفی.
· حساسیت بالا به اعوجاج در سیگنال.
· سیستم شنوایی انسان معیار اصلی پذیرش.
· MP3 (MPEG-1 Audio Layer III) حذف اجزای غیرقابل شنیدن.
· AAC (Advanced Audio Coding) بهینهتر از MP3، نرخ بیت پایینتر.
· Opus مدرن، open source، adaptive bitrate.
· Wavelet-based Compression برای کاربردهای با دقت بالا.
· Autoencoders و Variational Autoencoders برای بازنمایی فشرده.
· Signal-to-Noise Ratio (SNR)
· Perceptual Evaluation of Speech Quality (PESQ)
· ترکیبی از تصویر و صدا
· دارای افزونگی فضایی و زمانی (spatial & temporal redundancy)
· حساس به نرخ انتقال و latency در کاربردهای real-time
· H.264 / AVC استاندارد محبوب، بین فشردهسازی و کیفیت تعادل ایجاد میکند.
· H.265 / HEVC نرخ بیت پایینتر با کیفیت مشابه، پیچیدهتر.
· AV1 open source، پیشرفتهتر، مناسب برای وب و استریمینگ.
· Deep Video Compression مبتنی بر RNN یا CNN برای استخراج ویژگیهای بین فریمها.
· Intra-frame Compression مشابه تصویر.
· Inter-frame Compression ذخیره تغییرات بین فریمها (motion estimation + compensation).
· دادههای بسیار حجیم (Big Data) از حسگرها، آزمایشات، شبیهسازیها.
· نیاز به دقت بالا، قابل استفاده در تحلیلهای آماری یا مدلسازیهای عددی.
· اغلب lossless یا near-lossless
· SZ, ZFP, FPZIP الگوریتمهای مخصوص دادههای عددی.
· Predictive Coding استفاده از مدلسازی وابستگی بین مقادیر.
· Autoencoders و Variational Autoencoders فشردهسازی ویژگیهای آماری پیچیده.
· فشردهسازی دادههای تصویربرداری پزشکی (MRI, CT), سیگنال EEG، دادههای ماهوارهای، نتایج شبیهسازی CFD
نوع داده |
فشردهسازی ترجیحی |
Lossless یا Lossy |
الگوریتمهای رایج |
متنی |
دیکشنری، آماری |
Lossless |
Huffman, LZ77 |
تصویری |
تبدیل، یادگیری عمیق |
Lossy معمولاً |
JPEG, JPEG2000 |
صوتی |
طیفی، عصبی |
Lossy |
MP3, AAC, Opus |
ویدئویی |
بینفریمی، عصبی |
Lossy |
H.264, H.265, AV1 |
سنجشی / علمی |
مدلمحور، یادگیری |
Lossless/Near-Lossy |
SZ, ZFP, Autoencoder |
دستهبندی کلی:
فشردهسازی داده به دو دستهی اصلی تقسیم میشود:
1. فشردهسازی بدون اتلاف (Lossless Compression)
در این روش، دادههای اصلی پس از فشردهسازی و سپس بازسازی (decompression) بدون هیچ تغییری و بهطور کامل قابل بازیابی هستند. این نوع برای دادههایی مثل متون، فایلهای اجرایی، کدها و یا دادههای حساس به دقت (مانند تصاویر پزشکی) استفاده میشود.
الگوریتمهای رایج:
الف Huffman Coding
ب Arithmetic Coding
ج Lempel-Ziv-Welch (LZW)
د Burrows-Wheeler Transform (BWT)
2. فشردهسازی با اتلاف (Lossy Compression)
در این روش، دادهها بهگونهای فشرده میشوند که بخشی از اطلاعات آنها برای همیشه از بین میرود. اما هدف این است که از نظر ادراک انسانی (مثلاً برای تصاویر یا صوت)، این تفاوتها غیرقابل تشخیص باشد.
کاربردها:
الگوریتمها و تکنیکها:
الف) تبدیل کسینوسی گسسته (Discrete Cosine Transform – DCT)
ب) تبدیل موجک گسسته (Discrete Wavelet Transform – DWT)
ج) Quantization (کوانتیزهسازی)