Nén dữ liệu

Trong công nghệ thông tin, Nén dữ liệu (tiếng Anh: "Data compression") là việc chuyển định dạng thông tin sử dụng ít bit hơn cách thể hiện ở dữ liệu gốc. Tùy theo dữ liệu có bị thay đổi trước và sau khi giải nén không, người ta chia nén thành hai loại: Nguyên vẹn (lossless) và bị mất dữ liệu (lossy). Nén mất dữ liệu giảm số lượng bit bằng cách xác định các thông tin không cần thiết và loại bỏ chúng.

Nén dữ liệu là cần thiết vì giảm được nguồn tài nguyên cũng như dung lượng lưu trữ hay băng thông đường truyền. Tuy nhiên, vì dữ liệu nén cần được giải nén nên sẽ đòi hỏi nhiều phần cứng và xử lý.
== Nén không mất dữ liệu==
Các thuật toán nén không mất dữ liệu thường dựa trên giả thuyết dư thừa trong dữ liệu và thể hiện dữ liệu chính xác hơn mà không mất các thông tin. Nén mà không làm mất dữ liệu là khả thi vì tất cả các dữ liệu thực tế đều có dư thừa. Ví dụ một hình ảnh có thể có các vùng màu sắc không thay đổi trong nhiều pixel. Thay vì ghi nhận từng pixel như đỏ, đỏ, đỏ... dữ liệu có thể được ghi là 279 điểm ảnh đỏ liên tiếp. Đây là một ví dụ về run-length encoding; ngoài ra còn có rất nhiều giải thuật khác.

Dựa theo mức áp dụng thuật toán nén người ta chia nén thành các dạng sau:

- Nén tệp tin: Đây là dạng thức nén truyền thống và thuật toán nén được áp dụng cho từng tệp tin riêng lẻ. Tuy vậy nếu 2 tệp tin giống nhau thì vẫn được nén 2 lần và được ghi 2 lần. Chỉ các byte trùng lắp trong 1 file được loại trừ để giảm kích thước. Tùy dữ liệu nhưng thông thường khả năng giảm sau khi nén chỉ từ 2-3 lần.
- Loại trừ trùng lắp file: Đây là dạng thức nén mà thuật toán nén được áp dụng cho nhiều tập tin. Các file giống hệt nhau sẽ chỉ được lưu một lần. Ví dụ một thư điện tử có tệp tin đính kèm được gửi cho 1000 người. Chỉ có một bản đính kèm được lưu và vì vậy có thể giảm khá nhiều. Thông thường có thể giảm từ 5-10 lần so với dữ liệu gốc.
- Loại trừ trùng lắp ở mức sub-file: Đây là một dạng thức kết hợp cả nén tệp tin và loại trừ trùng lắp.

== Nén có mất dữ liệu==
Chuẩn nén tín hiệu số gồm có các chuẩn sau:

=== Chuẩn MJPEG ===
Đây là một trong những chuẩn cổ nhất mà hiện nay vẫn sử dụng. MJPEG (Morgan JPEG). Chuẩn này hiện chỉ sử dụng trong các thiết bị DVR rẻ tiền, chất lượng thấp. Không những chất lượng hình ảnh kém, tốn tài nguyên xử lý, cần nhiều dung lượng ổ chứa, và còn hay làm lỗi đường truyền.

=== Chuẩn MPEG2 ===
Chuẩn MPEG là một chuẩn thông dụng. Đã được sử dụng rộng rãi trong hơn một thập kỉ qua. Tuy nhiên, kích thước file lớn so với những chuẩn mới xuất hiện gần đây, và có thể gây khó khăn cho việc truyền dữ liệu.

Ví dụ như trong MPEG-2, nơi mà nội dung được tạo ra từ nhiều nguồn như video ảnh động, đồ họa, văn bản… và được tổ hợp thành chuỗi các khung hình phẳng, mỗi khung hình (bao gồm các đối tượng như người, đồ vật, âm thanh, nền khung hình…) được chia thành các phần tử ảnh pixels và xử lý đồng thời, giống như cảm nhận của con người thông qua các giác quan trong thực tế. Các pixels này được mã hoá như thể tất cả chúng đều là các phần tử ảnh video ảnh động. Tại phía thu của người sử dụng, quá trình giải mã diễn ra ngược với quá trình mã hoá không khó khăn. Vì vậy có thể coi MPEG-2 là một công cụ hiển thị tĩnh, và nếu một nhà truyền thông truyền phát lại chương trình của một nhà truyền thông khác về một sự kiện, thì logo của nhà sản xuất chương trình này không thể loại bỏ được. Với MPEG-2, bạn có thể bổ sung thêm các phần tử đồ hoạ và văn bản vào chương trình hiển thị cuối cùng (theo phương thức chồng lớp), nhưng không thể xoá bớt các đồ hoạ và văn bản có trong chương trình gốc.

=== Chuẩn MPEG-4 ===
Mpeg-4 là chuẩn cho các ứng dụng MultiMedia. Mpeg-4 trở thành một tiêu chuẩn cho nén ảnh kỹ thuật truyền hình số, các ứng dụng về đồ hoạ và Video tương tác hai chiều (Games, Videoconferencing) và các ứng dụng Multimedia tương tác hai chiều (World Wide Web hoặc các ứng dụng nhằm phân phát dữ liệu Video như truyền hình cáp, Internet Video...). Mpeg-4 đã trở thành một tiêu chuẩn công nghệ trong quá trình sản xuất, phân phối và truy cập vào các hệ thống Video. Nó đã góp phần giải quyết vấn đề về dung lượng cho các thiết bị lưu trữ, giải quyết vấn đề về băng thông của đường truyền tín hiệu Video hoặc kết hợp cả hai vấn đề trên.

Với MPEG-4, các đối tượng khác nhau trong một khung hình có thể được mô tả, mã hoá và truyền đi một cách riêng biệt đến bộ giải mã trong các dòng cơ bản ES (Elementary Stream) khác nhau. Cũng nhờ xác định, tách và xử lý riêng các đối tượng (như nhạc nền, âm thanh xa gần, đồ vật, đối tượng ảnh video như con người hay động vật, nền khung hình …), nên người sử dụng có thể loại bỏ riêng từng đối tượng khỏi khuôn hình. Sự tổ hợp lại thành khung hình chỉ được thực hiện sau khi giải mã các đối tượng này.

=== H.264 ===
H.264 (MPEG-4 AVC hay MPEG-4 part 10), hiện đang là phương thức tiên tiến nhất trong lĩnh vực nén video. H.264 cho chất lượng hình ảnh tốt nhất khi có cùng dung lượng so với các chuẩn nén khác. H.264 cũng được ứng dụng như thuật nén chính trong video độ phân giải cao (HD).