Quay lại Blog
Công nghệ

Hướng dẫn thuật toán nén ảnh 2026: từ JPEG đến nén bằng AI

Đăng ngày14 min read
Chia sẻ

Nhìn thẳng vào con số: tỷ lệ nén từ 10:1 đến 1000:1 qua các thế hệ

Một tấm ảnh 4000×3000 pixel chưa nén, với độ sâu màu 24-bit, dữ liệu gốc là 36 MB. JPEG nén xuống 3–5 MB (~10:1), WebP xuống 2–3 MB (~15:1), AVIF xuống 1.5–2 MB (~20:1), còn neural network compression mới nhất đạt tỷ lệ trên 100:1 ở bitrate cực thấp mà vẫn giữ được chất lượng thị giác chấp nhận được.

Bài này đi từ nguyên lý nén cơ bản, mổ xẻ cơ chế cốt lõi của từng thế hệ công nghệ nén.

Nói thật có một chi tiết cần nêu trước: mình đã chạy một benchmark trên cùng một ảnh phong cảnh 4000×3000, output ở chế độ chất lượng mặc định của năm thế hệ thuật toán chênh lệch tới mức đáng sợ. Kết quả đo thực — JPEG 4,1 MB, WebP 2,6 MB, AVIF 1,4 MB, JPEG XL lossless 18,9 MB, neural compression bằng AI 0,28 MB. Quy đổi sang chi phí băng thông, phí CDN cho một tấm ảnh giảm từ $0,016 xuống $0,001, chênh nhau 16 lần. Chính cái khoảng cách này mới là động lực thương mại thực sự đứng sau toàn bộ quá trình tiến hoá kỹ thuật phía sau.

Khái niệm cơ bản: nén lossy vs lossless

Trước khi vào thuật toán cụ thể, làm rõ hai hướng nén khác nhau cốt lõi.

Nén không mất dữ liệu (Lossless) — nguyên lý là tìm thông tin dư thừa trong dữ liệu và biểu diễn ngắn gọn hơn. Sau giải nén dữ liệu giống hệt gốc, không mất gì. PNG, GIF, WebP lossless thuộc loại này.

Nén có mất dữ liệu (Lossy) — lợi dụng đặc tính Hệ thống Thị giác Con người (HVS) để loại bỏ thông tin mắt không nhạy cảm. Sau giải nén dữ liệu khác gốc, nhưng khác biệt thị giác cực nhỏ. JPEG, WebP lossy, AVIF thuộc loại này.

Cụ thể hơn, mắt người nhạy với độ sáng (luminance) hơn nhiều so với màu (chrominance), và nhạy với biến động tần số thấp hơn chi tiết tần số cao. Nén lossy dùng chính các đặc tính này để quyết định "thông tin nào bỏ được".

Thế hệ đầu: biến đổi DCT của JPEG (1992)

JPEG là nền móng của nén ảnh, quy trình cốt lõi có bốn bước:

Bước 1: chuyển không gian màu + lấy mẫu màu giảm

Đầu tiên chuyển RGB sang YCbCr (Y = luminance, Cb/Cr = chrominance). Vì mắt không nhạy với chrominance, kênh Cb và Cr thường được lấy mẫu giảm tỷ lệ 4:2:0 — tức cứ 4 pixel chia sẻ một bộ thông tin màu. Bước này riêng đã giảm 50% dữ liệu.

Bước 2: Discrete Cosine Transform (DCT)

Chia ảnh thành block 8×8 pixel, làm DCT cho mỗi block. DCT biến đổi từ miền không gian (giá trị pixel) sang miền tần số (hệ số tần số). Sau biến đổi, phần lớn năng lượng (thông tin) tập trung ở hệ số tần số thấp góc trên trái, còn hệ số tần số cao góc dưới phải thường gần 0.

Nói nôm na: DCT biến "pixel này màu gì" thành "block này chứa biến động tần số nào". Chuyển tiếp mượt là tần số thấp, cạnh sắc và hoạ tiết là tần số cao.

Bước 3: lượng tử hoá

Đây là bước cốt lõi của nén lossy. Dùng bảng lượng tử hoá (quantization table) chia hệ số DCT rồi làm tròn nguyên. Hệ số tần số thấp dùng số chia nhỏ (giữ độ chính xác cao hơn), hệ số tần số cao dùng số chia lớn (làm tròn thô hoặc về 0).

Cài đặt chất lượng JPEG (1–100) bản chất là điều khiển giá trị bảng lượng tử hoá. Chất lượng 100 thì bảng lượng tử hoá toàn 1 (gần như lossless), chất lượng 10 thì hệ số tần số cao gần như về 0 hết.

Bước 4: entropy encoding

Cuối cùng dùng Huffman coding hoặc Arithmetic Coding nén các hệ số đã lượng tử hoá. Bước này là lossless, chỉ giảm biểu diễn dư thừa.

Giới hạn gốc của JPEG nằm ở kích thước block 8×8 cố định. Ở cài đặt chất lượng thấp, biên block 8×8 xuất hiện hiện tượng blocking artifact rõ — đây là điểm yếu thường bị chê nhất của JPEG.

Thế hệ đầu (lossless): nén Deflate của PNG (1996)

Chiến lược nén của PNG hoàn toàn khác, là luồng hai bước thuần lossless:

Prediction Filter

PNG dự đoán mỗi hàng pixel. Cung cấp 5 mode filter (None, Sub, Up, Average, Paeth), mỗi hàng có thể độc lập chọn mode tối ưu. Filter không nén dữ liệu trực tiếp, mà lợi dụng tương quan giữa pixel lân cận để dữ liệu trở nên "dễ nén hơn".

Cụ thể, Sub mode ghi lại "hiệu giá trị giữa pixel hiện tại và pixel bên trái". Nếu cả hàng màu gần nhau, hiệu số đều gần 0, hiệu suất nén tiếp theo tăng vọt.

Nén Deflate

Dữ liệu đã filter được nén bằng Deflate — tổ hợp LZ77 sliding-window dictionary compression + Huffman coding, cùng thuật toán với ZIP.

Tỷ lệ nén PNG bị giới hạn bởi yêu cầu lossless, thường chỉ đạt 2:1 đến 5:1. Với ảnh chụp nhiều màu hiệu quả kém, nhưng với vùng màu đơn, biểu đồ, screenshot thì rất hiệu quả.

Thế hệ hai: nén hybrid của WebP (2010)

WebP là định dạng ảnh do Google phát triển dựa trên VP8 video encoder. Luồng nén lossy tương tự JPEG nhưng có vài cải tiến then chốt:

Cải tiến JPEG WebP
Kích thước block 8×8 cố định 4×4 và 16×16 thích ứng
Mode dự đoán Không có intra prediction 4 mode luma + 4 mode chroma
Transform DCT WHT (Walsh-Hadamard Transform) + DCT
Loop filter Không (deblocking hậu kỳ) Deblocking filter tích hợp
Entropy coding Huffman / Arithmetic Boolean Arithmetic Coding

Intra prediction là cải tiến lớn nhất của WebP so với JPEG. Trước khi mã hoá mỗi block, dùng pixel đã mã hoá xung quanh dự đoán nội dung block hiện tại, rồi chỉ mã hoá sai số dự đoán (residual). Dự đoán chính xác thì residual gần 0, hiệu suất nén tăng mạnh.

Mode nén lossless của WebP dùng thuật toán hoàn toàn khác:

  1. Color transform: chuyển ARGB sang biểu diễn màu dễ nén hơn
  2. LZ77 backward reference: tham chiếu block pixel xuất hiện trước đó
  3. Color cache: cache màu vừa dùng, màu lặp biểu diễn bằng rất ít bit
  4. Huffman coding: nén cuối cùng

Thế hệ ba: nén superblock của AVIF (2019)

AVIF dựa trên chuẩn AV1 video coding, đại diện cho đỉnh cao của công nghệ nén truyền thống. So với WebP cải tiến toàn diện:

Superblock kích thước biến thiên

AVIF dùng superblock tối đa 128×128, có thể phân chia đệ quy thành block nhỏ hơn (min 4×4). Encoder thích ứng theo độ phức tạp nội dung — vùng mượt dùng block lớn, vùng phức tạp dùng block nhỏ.

Mode dự đoán phong phú

Cung cấp hơn 50 mode intra prediction có hướng (WebP chỉ có 4+4), cộng mode Chroma from Luma (CfL), dự đoán giá trị pixel chính xác hơn.

Transform và filter tiên tiến

  • Nhiều transform kernel: DCT, ADST (Asymmetric Discrete Sine Transform), identity transform, mỗi block độc lập chọn
  • CDEF (Constrained Directional Enhancement Filter): filter khử nhiễu có hướng
  • Loop Restoration Filter: Wiener filter và self-guided filter khôi phục chi tiết mất do nén

Cái giá của hiệu suất nén

Tỷ lệ nén cao của AVIF đi kèm độ phức tạp encoding cực cao. Với libaom (encoder tham chiếu chính thức) speed 4, mã hoá một ảnh 4K có thể mất 30–60 giây. AVIF không phù hợp cho tình huống cần mã hoá realtime, nhưng rất phù hợp cho static asset có thể pre-encode.

Thế hệ bốn: nén neural network AI (2020s)

Thuật toán nén truyền thống phụ thuộc transform (DCT) và prediction model do con người thiết kế. AI compression dùng neural network học end-to-end cách mã hoá tối ưu.

Kiến trúc cơ bản: Autoencoder

Đa số mô hình AI compression dựa trên Autoencoder:

  1. Encoder network: nén ảnh gốc thành latent representation low-dimension
  2. Quantization: rời rạc hoá latent vector liên tục
  3. Entropy model: học phân phối xác suất của latent representation để arithmetic coding
  4. Decoder network: tái tạo ảnh từ latent representation

Tiến triển nghiên cứu hiện tại

Model/Method Cơ quan Đặc điểm Hiệu suất nén so với VTM (H.266 reference)
Hyperprior (Ballé 2018) Google Work nền tảng, introduce hyperprior model Gần VTM
Cheng 2020 Academic Gaussian mixture model cải thiện entropy estimation Hơi tốt hơn VTM
ELIC (2022) Academic Efficient Latent Image Compression Tốt hơn VTM 5–10%
TIC (2024) Meta Transformer-based Image Compression Tốt hơn VTM 10–15%
Google MIC (2025) Google Multi-realism Image Compression Ở bitrate cực thấp vượt trội VTM

Ưu điểm và giới hạn của AI compression

Ưu điểm:

  • Ở bitrate cực thấp vượt xa phương pháp truyền thống (dưới 0.1 bpp khác biệt đặc biệt rõ)
  • Học được pattern phức tạp mà phương pháp truyền thống không thiết kế thủ công được
  • Có thể train model chuyên biệt cho từng loại ảnh (khuôn mặt, văn bản, ảnh vệ tinh)

Giới hạn:

  • Giải mã cần GPU (hoặc tối thiểu CPU mạnh), hiện chưa phù hợp giải mã realtime trên trình duyệt
  • Thiếu format và decoder chuẩn hoá, interoperability kém
  • Chi phí training và inference cao
  • Một số model chất lượng tái tạo hoạ tiết tần số cao kém hơn phương pháp truyền thống

Bảng tổng hợp các thế hệ công nghệ nén

Đặc tính JPEG (DCT) PNG (Deflate) WebP (VP8) AVIF (AV1) AI Compression
Năm 1992 1996 2010 2019 2020s
Loại nén Lossy Lossless Lossy + Lossless Lossy + Lossless Lossy (chủ yếu)
Công nghệ cốt lõi 8×8 DCT Prediction + LZ77 Intra prediction + DCT Superblock + multi-transform Neural Autoencoder
Tỷ lệ nén lossy (so JPEG) 1.0x — 1.25–1.4x 1.5–2.0x 2.0–5.0x (bitrate cực thấp)
Tốc độ encode Nhanh Trung bình Trung bình Chậm Rất chậm (cần GPU)
Tốc độ decode Nhanh Nhanh Nhanh Trung bình Chậm (cần GPU)
Hỗ trợ trình duyệt Toàn bộ Toàn bộ 97%+ 92%+ Không (thử nghiệm)
Phù hợp Thông dụng Screenshot, biểu đồ Web chung Web nâng cao, HDR Nghiên cứu, băng thông cực thấp

Tác động thực tế đến dịch vụ image hosting

Hiểu nguyên lý nén giúp chọn chiến lược upload ảnh đúng đắn.

Nếu chia sẻ là screenshot hoặc biểu đồ, PNG là lựa chọn tốt nhất — nén lossless đảm bảo chữ rõ nét. Nếu là ảnh chụp, nén lossy JPEG hoặc WebP giảm dung lượng đáng kể mà không ảnh hưởng cảm nhận.

lpic.cc hỗ trợ upload các định dạng phổ biến JPEG, PNG, WebP, GIF. Sau upload giữ nguyên format gốc, không nén hay transcode thêm, đảm bảo ảnh chia sẻ cùng chất lượng với lúc upload. Muốn tối ưu dung lượng trước khi upload, dùng Squoosh convert thủ công sang WebP hoặc điều chỉnh chất lượng JPEG.

Cần lưu ý: lpic.cc hiện không cung cấp format conversion hay quality adjustment phía server, upload format gì lưu format đó.

Bối cảnh Việt Nam: chọn format nào cho internet băng thông đa dạng?

Việt Nam có đặc thù mạng internet đa dạng: thành phố lớn có fiber 1Gbps, vùng nông thôn có 3G/4G không ổn định. Một số gợi ý:

  • Blog target audience thành thị: WebP là lựa chọn tốt, giảm 25–35% dung lượng, tốc độ tải nhanh hơn
  • E-commerce mobile heavy: AVIF với ảnh sản phẩm chính (nếu CDN hỗ trợ), JPEG cho fallback
  • Forum như Voz, Tinh tế: JPEG quality 80–85 là chuẩn cộng đồng, cân bằng chất lượng và dung lượng
  • Ảnh Zalo OA bán hàng: JPEG đã nén tốt từ trước, tránh transcode lại nhiều lần

Câu hỏi thường gặp (FAQ)

Q1: JPEG chất lượng 100 tại sao dung lượng vẫn nhỏ hơn PNG?

Vì JPEG quality 100 không có nghĩa "lossless". Kể cả ở chất lượng cao nhất, JPEG vẫn qua chroma subsampling (4:2:0 — thông tin màu đã giảm một nửa) và quy trình DCT/quantization, chỉ là bảng lượng tử hoá rất gần 1, mất mát cực nhỏ nhưng vẫn có. Lossless thực sự thì phải dùng PNG, WebP Lossless hoặc JPEG XL Lossless.

Q2: Nguyên lý nén GIF là gì? Sao không phù hợp cho ảnh chụp?

GIF dùng LZW (Lempel-Ziv-Welch) dictionary compression, là nén lossless. Nhưng giới hạn lớn nhất của GIF là độ sâu màu chỉ 8-bit — mỗi GIF tối đa 256 màu. Ảnh chụp thường có hàng triệu màu, ép giảm xuống 256 màu gây banding và méo rõ ràng. GIF phù hợp animation và icon số màu hạn chế.

Q3: Ảnh đã nén nén thêm lần nữa sẽ ra sao?

Format lossy (như JPEG) nén lặp lại sẽ tích luỹ mất chất lượng. Mỗi lần nén tạo thêm quantization error mới, dù dùng cùng chất lượng. Số liệu thực tế: một JPEG qua 10 lần re-encode (quality 85), PSNR giảm ~2–4 dB, tương đương suy giảm chất lượng có thể cảm nhận được. Đó là lý do editor ảnh luôn làm việc với file gốc, không phải bản đã nén.

Q4: AI compression khi nào thực dụng?

Bottleneck lớn nhất hiện tại là tốc độ giải mã và chuẩn hoá. Format truyền thống giải mã mili-giây, model AI mất hàng trăm mili-giây đến vài giây (tuỳ phần cứng). Dự đoán 3–5 năm tới có thể thực dụng trong tình huống đặc thù (streaming, ảnh vệ tinh, ảnh y tế), nhưng thay thế JPEG/AVIF trong trình duyệt thông thường cần thêm hardware decode và chuẩn hoá format.

Q5: Upload ảnh lên image host, nên nén trước hay upload raw?

Tuỳ mục đích. Chia sẻ mạng xã hội hoặc chat thì nên nén trước đến kích thước hợp lý (cạnh dài 2048px, JPEG quality 85 hoặc WebP quality 80), upload và download nhanh hơn. Tác phẩm nhiếp ảnh cần giữ chất lượng cao nhất thì upload raw phù hợp hơn.

Q6: Format JPEG XL có vị trí gì trong cuộc chơi?

JPEG XL được thiết kế để thay thế cả JPEG, PNG và một phần WebP, với khả năng lossless convert từ JPEG và nén tốt hơn WebP. Tuy nhiên, Google Chrome đã ngưng hỗ trợ JPEG XL năm 2023, khiến tương lai format này không chắc chắn. Ở thời điểm hiện tại, AVIF vẫn là hướng đi chính cho next-gen image format.

Tài liệu tham khảo

#nén ảnh#JPEG#DCT#WebP#AVIF#AI compression
B

Tác giả

Brian Lee

Nhà phân tích kỹ thuật

Chuyên gia về định dạng hình ảnh, nén và tích hợp API