Đối với một số lý do, bạn thực sự có thể phù hợp với 2 triệu điểm ảnh vào một hình ảnh mà không cần sử dụng 1, 97 megabyte không gian. Tôi tìm thấy một hình nền 1080p ngọt ngào (có khoảng 2 triệu pixel) và tải xuống. Kiểm tra các thuộc tính, tôi nhận thấy một cái gì đó kỳ lạ: Nó chỉ chiếm 230 KB không gian trên ổ cứng của tôi. Tại sao vậy? Đối với những người không hoàn toàn hiểu được nén hình ảnh, nó có vẻ giống như ma thuật. Nhưng một khi bạn biết được chủ đề, bạn sẽ hiểu cách một số hình ảnh lớn hơn các hình ảnh khác mặc dù số lượng pixel mà chúng chiếm trên màn hình của bạn. Thời gian ngắn, vì vậy chúng ta hãy nhanh chóng đi sâu vào các nguyên tắc cơ bản đằng sau nén hình ảnh.

Phương pháp, phương pháp tiếp cận, thuật toán Galore.

Thật ngây thơ khi nghĩ rằng chỉ có một cách để nén hình ảnh. Có nhiều phương pháp khác nhau, mỗi phương pháp có một cách tiếp cận duy nhất cho một vấn đề chung, và mỗi cách tiếp cận được sử dụng trong các thuật toán khác nhau để đạt được một kết luận tương tự. Mỗi thuật toán được biểu thị bằng định dạng tệp (PNG, JPG, GIF, v.v.). Bây giờ, chúng ta sẽ nói về các phương pháp thường được sử dụng để nén hình ảnh, điều này sẽ giải thích lý do tại sao một số phương pháp chiếm ít không gian hơn.

Nén không mất dữ liệu

Khi bạn nghĩ về từ "lossless" trong bối cảnh nén ảnh, bạn có thể nghĩ về một phương pháp cố gắng hết sức để bảo toàn chất lượng trong khi vẫn duy trì kích thước hình ảnh tương đối nhỏ. Điều đó rất gần với sự thật. Như một phương pháp, nén lossless giảm thiểu sự biến dạng càng nhiều càng tốt, bảo quản hình ảnh rõ nét. Nó thực hiện điều này bằng cách xây dựng chỉ mục của tất cả các pixel và nhóm các pixel cùng màu với nhau. Nó giống như cách nén tệp hoạt động, ngoại trừ chúng tôi đang xử lý các đơn vị dữ liệu nhỏ hơn.

DEFLATE là một trong những thuật toán phổ biến nhất cho loại công việc này. Nó dựa trên hai thuật toán khác (Huffman và LZ77, nếu bạn là một con mọt sách) và nó có một cách rất cố gắng và đúng sự thật về nhóm dữ liệu được tìm thấy trong hình ảnh. Thay vì chỉ chạy qua chiều dài của dữ liệu và lưu trữ nhiều phiên bản của một pixel với cùng một màu vào một đơn vị dữ liệu (được gọi là mã hóa độ dài chạy), nó lấy chuỗi trùng lặp tìm thấy trong toàn bộ mã và đặt "con trỏ" cho mỗi bản sao tìm thấy. Bất cứ nơi nào một chuỗi dữ liệu cụ thể (pixel) được sử dụng thường xuyên, nó sẽ thay thế tất cả các pixel đó bằng một biểu tượng có trọng số để nén thêm mọi thứ.

Lưu ý cách mã hóa độ dài chạy và DEFLATE, không có pixel nào thực sự bị ăn hoặc buộc phải thay đổi màu sắc. Sử dụng phương pháp này hoàn toàn là kết quả trong một hình ảnh giống hệt với nguyên gốc. Sự khác biệt duy nhất giữa hai nằm trong bao nhiêu không gian thực sự được đưa lên trên ổ cứng của bạn!

Nén tổn hao

Như tên của nó, nén mất dữ liệu làm cho một hình ảnh mất một số nội dung của nó. Khi chụp quá xa, nó thực sự có thể làm cho hình ảnh không thể nhận ra. Nhưng lossy không ngụ ý rằng bạn đang loại bỏ các điểm ảnh. Có hai thuật toán thường được sử dụng để nén hình ảnh theo cách này: chuyển đổi mã hóalấy mẫu con . Trước đây là phổ biến hơn trong hình ảnh và sau này trong video.

Với mã hóa biến đổi, màu của hình ảnh được tính trung bình bằng cách sử dụng một công thức toán học đặc biệt được gọi là biến đổi cosin rời rạc. Hình ảnh bị mất màu và có thể giới thiệu các hiện vật (pixellation kỳ lạ tại các điểm ngẫu nhiên của hình ảnh) khi được sử dụng quá mức. Thuật toán cụ thể này bù đắp cho sự vụng về của nó với một lợi thế mạnh mẽ: Bạn có thể quyết định chỉ có bao nhiêu chất lượng bạn muốn ở lại với hình ảnh. Với nén không mất dữ liệu, gần nhất bạn có thể đến để thao tác chất lượng một cách tổng thể là bằng cách thiết lập số lượng màu sắc mà mỗi hình ảnh sẽ có.

Chroma subsampling có một cách tiếp cận khác. Thay vì tính trung bình các khối màu nhỏ, điều này cũng có thể ảnh hưởng đến độ sáng của hình ảnh, nó cố gắng giữ độ sáng giống nhau trên tất cả các khu vực. Điều này lừa đôi mắt của bạn vào không dễ dàng nhận thấy bất kỳ nhúng trong chất lượng. Nó thực sự tuyệt vời cho việc nén các hình động, đó là lý do tại sao nó được sử dụng nhiều hơn trong các luồng video. Đó không phải là để nói rằng hình ảnh cũng không sử dụng thuật toán này.

Nhưng xin chờ chút nữa! Google cũng đã chụp một thuật toán mất mát mới, được gọi là WebP. Thay vì tính trung bình thông tin màu, nó dự đoán màu của một điểm ảnh bằng cách nhìn vào các mảnh xung quanh nó. Dữ liệu thực sự được ghi vào ảnh nén được tạo ra là sự khác biệt giữa màu được dự đoán và màu thực tế. Cuối cùng, nhiều dự đoán sẽ chính xác, dẫn đến số không. Và thay vì in toàn bộ các số không, nó chỉ nén tất cả chúng thành một biểu tượng đại diện cho chúng. Độ chính xác của hình ảnh được cải thiện và độ nén giảm kích thước hình ảnh trung bình 25% so với các thuật toán mất dữ liệu khác, theo Google.

Đó là thời gian cho câu hỏi và thảo luận!

Nếu bạn chưa quen với thế giới của các tập tin hình ảnh, có thể bạn sẽ tìm thấy ít nhất một chút thông tin này gây nhầm lẫn. Nếu bạn có câu hỏi, hãy đăng câu hỏi đó trong các nhận xét và chúng tôi sẽ cố gắng hết sức để trả lời. Nếu không, bạn có thể thảo luận về điều này!