2011-06-30 25 views
9

Tôi đang xử lý các tệp hình ảnh thu thập, nhưng tôi không chắc chắn về cách lưu trữ hình ảnh. Mỗi pixel là một giá trị 16 bit chưa ký, với các giá trị thông thường từ 0 đến khoảng 1000 (ở dạng số nguyên). Điều này là không đủ bit cho các giá trị hex, và nó không RGB (0-255) vì vậy tôi không hoàn toàn chắc chắn nó là gì.Tệp hình ảnh RAW - dữ liệu của tôi ở định dạng nào?

Phần thưởng: nếu bạn có bất kỳ ý tưởng nào về cách chuyển đổi thành màu xám trong OpenCV (hoặc chỉ là toán học), đây cũng sẽ là một trợ giúp lớn.

+2

Vâng, nơi mà bạn đã nhận được rằng hình ảnh? Bởi vì có hàng trăm định dạng thô. –

+0

Trước hết, bạn chưa nói * định dạng nào (và phiên bản), vì có một số. Thứ hai, tôi khuyên bạn nên sử dụng một thư viện hiện có. Xử lý các tệp hình ảnh RAW không phải là công việc dễ dàng vì thường những giá trị này cần xử lý bổ sung để tạo ra một hình ảnh. Các định dạng có thể hơi khác nhau ngay cả giữa các kiểu máy ảnh khác nhau của cùng một nhà sản xuất. Có một lý do tại sao hầu hết các chương trình/thư viện là độc quyền và chi phí tiền bạc. – DarkDust

+0

Tôi nhận được những hình ảnh này từ thực tập tại một công ty nhỏ và họ cũng không chắc chắn về cách các giá trị này tương quan với màu sắc. Tất cả những gì họ biết là nó hoạt động trong MATLAB, nhưng họ muốn tôi viết lại nó trong C++. Tôi đang học cách sử dụng OpenCV để xử lý, nhưng xem hình ảnh trong OpenCV mang lại một hình ảnh rất đen, chỉ với một vài khu vực có màu xám đen đậm. Hình ảnh opencv tương tự như hình ảnh thực tế, nhưng trong nhiều màu tối hơn. – Andrw

Trả lời

10

Tên RAW xuất phát từ thực tế là các giá trị được lưu trữ trong tệp không phải là giá trị RGB pixel, nhưng các giá trị thô được đo từ chính máy ảnh. Các giá trị chỉ có ý nghĩa nếu bạn biết máy ảnh hoạt động như thế nào. Có một số tiêu chuẩn, nhưng thực sự, bạn chỉ nên xem RAW là một tập hợp các định dạng kém, không có giấy tờ, độc quyền mà có thể sẽ không trực quan khớp với bất kỳ ý tưởng nào bạn có về cách lưu trữ hình ảnh.

Check-out Dcraw - đó là đoạn code mà hầu hết các chương trình hỗ trợ RAW sử dụng

http://www.cybercom.net/~dcoffin/dcraw/

Tác giả thiết kế đối chiếu và thực hiện gần như mọi định dạng RAW độc quyền - và giữ nó cập nhật.

1

Quên những gì mà R/G/B 16-bit là:

"có thể có 5 bit cho màu đỏ, 6 bit cho màu xanh lá cây, và 5 bit cho màu xanh"

http://en.wikipedia.org/wiki/Color_depth#16-bit_direct_color

Đã xem nó được sử dụng trong mã trò chơi trước đây.

Ảnh chụp hoàn chỉnh trong bóng tối mặc dù cũng có định dạng RAW độc quyền.

+0

Cảm ơn bạn đã đề xuất, tôi sẽ dùng thử! – Andrw

3

Các câu trả lời khác là chính xác, RAW không phải là tiêu chuẩn, nó là viết tắt. Camera CCD thường không có các pixel màu đỏ, xanh lá cây và xanh lam riêng biệt cho mỗi pixel, thay vào đó, chúng sẽ sử dụng những gì được gọi là Bayer Pattern và sau đó chỉ lưu các giá trị pixel cho mẫu đó. Sau đó, bạn sẽ cần chuyển đổi mẫu đó thành giá trị rgb.

Ngoài ra, đối với câu hỏi tiền thưởng, nếu bạn chỉ đơn giản là cố gắng để chuyển đổi một hình ảnh RGB thành trắng đen, hoặc một cái gì đó như thế, bạn có thể sử dụng các toán ma trận, hoặc gọi convertTO

Các vấn đề liên quan