2012-06-18 30 views
10

Định dạng BMP cho thang màu xám Hình ảnh (đặc biệt là cho 16 bit cho mỗi pixel) là gì? wikipedia chỉ nói về hình ảnh màu cho bmp.Định dạng BMP cho Hình ảnh tỷ lệ xám là gì?

Cập nhật:

Chỉ cần cho một bản cập nhật và thông tin dành cho du khách trong tương lai, tôi sẽ cho PGM vì đây là nén và có thể hỗ trợ 16 bit màu xám quy mô. Một tùy chọn khác là sử dụng PNG, nhưng nó nén dữ liệu (mà không phải là những gì tôi muốn) như đã thảo luận here. Cũng lưu ý rằng hình ảnh có thể bị méo, vì hầu hết màn hình đều hỗ trợ 256 màu và không phải 4096 cho 16 bit. Vì vậy, hình ảnh sẽ được bão hòa.

Thật ngạc nhiên khi biết rằng BMP là gần như bất lực trong trường hợp có thang màu xám cho hình ảnh 16 bit.
Cảm ơn những người đã giúp tôi hiểu vấn đề.

+0

Bạn cần sử dụng định dạng khác nếu bạn muốn tỷ lệ xám 16 bit - Tôi đề xuất PNG. –

+0

là nén ít bị mất? – gpuguy

+0

Có, PNG là không mất dữ liệu - nó sử dụng zlib để nén: https://en.wikipedia.org/wiki/Portable_Network_Graphics –

Trả lời

3

Đối với hình ảnh thang độ xám, tôi sẽ sử dụng BMP 8 bit. BMP 8 bit có thể mã hóa màu với bảng màu. Tuy nhiên, nếu bạn không sử dụng, bạn chỉ có thể giải thích giá trị màu [0...255] làm màu từ đen (0) đến trắng (255).

Chỉnh sửa: Tôi sẽ không sử dụng BMP cho hình ảnh thang độ xám 16 bit. Về mặt kỹ thuật, bạn có thể sử dụng định dạng BMP 16 bit cho mỗi pixel để mã hóa dữ liệu màu xám 16 bit (http://en.wikipedia.org/wiki/BMP_file_format#Pixel_format). Tuy nhiên trong thực tế, đây là một ý tưởng tồi (đọc: hacky) vì chiều sâu đó được thiết kế để mã hóa các mẫu pixel alpha, đỏ, xanh lục và xanh lục.

Định dạng tốt hơn để lưu trữ dữ liệu xám 16 bit cho mỗi pixel là PNG.

Ngoài ra hãy tự hỏi, bạn có thực sự, thực sự cần thêm độ chính xác không? Đối với hầu hết các ứng dụng, 8 bit trên mỗi pixel chỉ là tốt (= nếu bạn không có bất kỳ yêu cầu cụ thể nào về độ chính xác, điều này sẽ đúng).

+0

Điều này không thực sự giúp anh ta với hình ảnh màu xám 16 bit của mình. – trumpetlicks

+0

Vâng. Câu hỏi đã được cập nhật sau đó với thông tin đó. – jsalonen

+0

Xin lỗi, đã không chú ý đến đó là một bản cập nhật :-) – trumpetlicks

2

Bạn nói đúng, BMP chỉ biết về màu sắc. Cách để làm điều này là tạo một bảng màu 256 mục, trong đó mỗi mục có cùng giá trị cho R, G, B: mục nhập đầu tiên (0,0,0), mục nhập thứ hai (1,1,1), v.v. làm cho hình ảnh 8 bit trên mỗi pixel bằng cách sử dụng bảng màu.

Chỉnh sửa: đưa ra yêu cầu mới cho màu xám 16 bit, tôi nghĩ bạn có 2 lựa chọn: chuyển đổi thành 8 bit hoặc sử dụng định dạng khác với BMP.

+0

Điều này không thực sự giúp anh ta với hình ảnh màu xám 16 bit của mình !!! – trumpetlicks

+0

@trumpetlicks, câu hỏi không đề cập đến 16 bit khi được viết. –

+0

Xin lỗi, đã không chú ý đến điều đó như là một bản cập nhật :-) Khác hơn thế, câu trả lời tốt! – trumpetlicks

1

Dường như TIFF và PNG hỗ trợ 16 bit xám.

http://en.wikipedia.org/wiki/Grayscale

Im giả định rằng những hình ảnh mà bạn muốn tiết kiệm không chỉ đơn giản là để trưng bày nhưng đối với một số loại chế biến sau khi bạn cần độ chính xác thêm? Nếu không, sau đó tôi sẽ đề nghị xóa 8 bit ít quan trọng nhất và lưu trữ bitmap 8 bit đơn giản với bản đồ màu để ánh xạ từng giá trị tới RGB bằng giá trị -> (giá trị, giá trị, giá trị) RGB mapping.