2012-05-28 114 views
7

Tại sao JPEG nén xử lý hình ảnh bằng các khối 8x8 thay vì áp dụng Discrete Cosine Transform cho toàn bộ hình ảnh?Tại sao JPEG nén xử lý hình ảnh theo khối 8x8?

+0

Hãy xem xét rằng DCT là giỏi nén khu vực khá trơn tru với nội dung tần số thấp, nhưng khá xấu tại khu vực nén nội dung tần số cao. –

+0

câu hỏi giống hệt nhau: http://stackoverflow.com/questions/11147666/why-do-image-compression-algorithms-process-the-image-by-sub-blocks/11147696#11147696 –

+0

Câu hỏi giống hệt trước đó: http: // stackoverflow.com/questions/74892/is-there-a-quality-file-size-or-other-benefit-to-jpeg-sizes-being-multiples-of –

Trả lời

1

Bởi vì, điều đó sẽ mất "mãi mãi" để giải mã. Tôi không nhớ đầy đủ bây giờ, nhưng tôi nghĩ rằng bạn cần ít nhất là nhiều hệ số như có các điểm ảnh trong khối. Nếu bạn mã toàn bộ hình ảnh dưới dạng một khối duy nhất tôi nghĩ bạn cần, đối với mỗi pixel, lặp qua tất cả các hệ số DCT.

Tôi không giỏi tính toán O lớn nhưng tôi đoán độ phức tạp sẽ là O ("mãi mãi"). ;-)

Đối với codec video hiện đại, tôi cho rằng họ đã bắt đầu sử dụng khối 16x16 thay thế.

+2

Nếu bạn cần lặp lại mọi thứ trong mỗi lần lặp lại, đó là O (n^2), không phải "mãi mãi", là O (n!). – Triang3l

2

8 X 8 được chọn sau nhiều thử nghiệm với các kích thước khác.

Kết luận của thử nghiệm là: 1. Bất kỳ ma trận nào có kích thước lớn hơn 8 X 8 đều khó thực hiện các phép toán (như biến đổi vv ..) hoặc không được phần cứng hỗ trợ hoặc mất nhiều thời gian hơn. 2. Bất kỳ ma trận kích thước nhỏ hơn 8 X 8 không có đủ thông tin để tiếp tục cùng với đường ống. Nó dẫn đến chất lượng ảnh nén kém.

Đọc, blog của tôi, http://nboddula.blogspot.com/2013/05/image-compression-how-jpeg-works.html