Đơn giản, phát trực tuyến, nén hình ảnh lossless


8

Có ai biết bất kỳ kỹ thuật nén hình ảnh với các đặc điểm sau:

  • không mất mát
  • phát trực tuyến - Tôi muốn nén khi đang di chuyển, pixel-by-pixel.
  • chi phí bộ nhớ thấp - Tôi có thể đủ khả năng để đệm một dòng duy nhất, nhưng lý tưởng nhất là không.
  • không có từ điển động
  • Chỉ hình ảnh "thế giới thực", do đó hiệu suất đối với "trường hợp khó chịu" như bảng điều khiển không quan trọng
  • Nén 2-3 lần (5x-10x sẽ còn tốt hơn, nhưng đó là câu hỏi tôi biết nhiều)
  • có thể hoạt động trên 10-16 bit pixel (tùy thuộc vào máy ảnh của tôi)

Hình ảnh của tôi sẽ rộng ~ 1k pixel, với tốc độ pixel ~ 20Mpix / giây. Độ sâu pixel sẽ là khoảng từ 10 đến 16 bit cho mỗi pixel (tùy thuộc vào sự lựa chọn của máy ảnh). Giả sử độ rộng pixel phụ 16 bit sẽ được biểu thị trong một từ 16 bit, thay vì cần phải trích xuất từ ​​luồng bit liên tục.

Một số hình thức mã hóa delta + số học có lẽ?


Các pixel 10 - 16 bit của bạn luôn được đệm, 16 bit hay chúng được đóng gói?
Paul R

1
Có vẻ như không có nhiều yêu cầu cụ thể về hình ảnh ở đó. Có nguy cơ nghe có vẻ rõ ràng, bạn đã xem xét thử một thuật toán nén dữ liệu trực tuyến tiêu chuẩn, như zlib, LZMA, v.v.?
Jason R

@PaulR - câu hỏi được cập nhật - các pixel sẽ được đệm.
Martin Thompson

@JasonR: Tôi đã thực hiện một chút điều tra về các kỹ thuật "tiêu chuẩn", nhưng ấn tượng (có thể không chính xác?) Của tôi là chúng có vẻ quá năng động và khá đói bộ nhớ (so với tiêu chí "thậm chí 1K kéo dài" của tôi :)
Martin Thompson

1
huffyuv được đề cập dưới đây khá giống với đề xuất 'delta + số học' của riêng bạn. Mặc dù rõ ràng nó sử dụng huffman thay vì mã hóa số học cho phần mã hóa entropy. trên 8 bit / pixel, nó thường đạt mức nén cao hơn 2 lần, chỉ với 1 bộ đệm dòng.
Ông Trắng

Câu trả lời:


4

Bạn có thể xem xét sử dụng HuffYUV: http://neuron2.net/www.math.berkeley.edu/benrg/huffyuv.html

Điều này không tốt hơn zip đơn giản, nhưng vẫn tối ưu hóa một chút cho hình ảnh.

Bất kỳ nén liên quan đến hình ảnh đều đến từ các kỹ thuật như lượng tử hóa Vector hoặc mã hóa Transform. Để sử dụng biến đổi, chẳng hạn như DCT / Wavelet, bạn có thể nghĩ đến JPEG-LS hoặc JPEG2000 để nén. Chỉ có điều, nó không phát trực tuyến theo nghĩa của bạn.


1
Huffyuv chỉ yêu cầu bộ đệm một dòng, đó là kỹ thuật phân rã không gian (bộ dự đoán trung vị) do đó đơn giản. Đối với tốc độ nén cao hơn, một công cụ dự đoán không gian tốt là chìa khóa. Hy vọng số lượng bộ đệm dòng cần thiết sẽ tăng lên đáng kể. Ví dụ, DCT / Wavelet, yêu cầu ít nhất 4 đến 8 dòng, để đạt được kết quả tốt hơn Huffyuv
Ông White

2

Điều này trông giống như những gì bạn sẽ đặt trong một máy ảnh kỹ thuật số cho một RAW không mất dữ liệu.

1 / Kiểm tra mã nguồn của dcraw để xem các nhà sản xuất máy ảnh khác nhau đang làm gì. Ví dụ, Pentax sử dụng một số lược đồ int có độ dài thay đổi (độ dài N được mã hóa bằng mã huffman, sau đó là N bit) để mã hóa delta của một pixel ghi pixel trước đó có cùng màu trong khảm khảm; và điều này thường xuyên đạt được tỷ lệ 1: 1,5 đến 1: 2.

Tập tin 2 / DNG cũng có thể được nén. Kiểm tra xem nó được thực hiện như thế nào từ thông số kỹ thuật của Adobe ... Không chắc nó có dựa trên dự đoán tương tự + mã hóa int có độ dài thay đổi (đang phát trực tuyến); hoặc nếu nó sử dụng JPEG-LS tiên tiến hơn dựa trên LOCO (và không may yêu cầu một số lần truyền dữ liệu).


1

zlib có chế độ nén ("HUFFMAN_ONLY") nhanh và không cần nhiều bộ nhớ. Đối với những bức ảnh điển hình sử dụng zlib với libpng tôi nhận được tỷ lệ nén khoảng 1: 2. Bạn có thể dùng thử với ImageMagick, GraphicsMagick hoặc pngcrush.

convert input.ppm -quality 1 output_im.png
gm convert input.ppm -quality 1 output_gm.png
pngcrush -force -m 12 input.png output_pc.png

Tất cả các ví dụ này đều sử dụng bộ lọc "phụ" PNG (1) có hiệu quả đối với ảnh. Đối với * Magick, "-quality 1" và cho pngcrush, "-m 12" có nghĩa là sử dụng bộ lọc "phụ" và nén "huffman_only".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.