2011-06-30 7 views
9

Pracuję nad przetwarzaniem plików graficznych .raw, ale nie jestem pewien, jak obraz jest przechowywany. Każdy piksel jest bez znaku 16-bitową wartością, z typowymi wartościami od 0 do około 1000 (w postaci całkowitej). To nie wystarcza bitów dla wartości szesnastkowych, a nie RGB (0-255), więc nie jestem do końca pewien, co to jest.Plik obrazu RAW - w jakim formacie są moje dane?

Bonus: jeśli masz pojęcie, jak przekonwertować to do skali szarości w OpenCV (lub po prostu matematycznie), byłoby to ogromną pomocą.

+2

A gdzie to masz obraz? Ponieważ istnieją setki surowych formatów. –

+0

Po pierwsze, nie powiedziałeś * jakiego * formatu (i wersji), ponieważ jest ich kilka. Po drugie, polecam używanie istniejącej biblioteki. Przetwarzanie plików obrazów RAW nie jest łatwym zadaniem, ponieważ często te wartości wymagają dodatkowego przetwarzania w celu wytworzenia obrazu. Formaty mogą się nieznacznie różnić nawet między różnymi modelami kamer tego samego producenta. Istnieje powód, dla którego większość tych programów/bibliotek jest własnością i kosztuje pieniądze. – DarkDust

+0

Mam te zdjęcia z mojego stażu w małej firmie i nie są pewne, jak te wartości są powiązane z kolorami. Wszystko, co wiedzą, działa w programie Matlab, ale chcą, żebym ponownie zakodował go w C++. Uczę się używać OpenCV do przetwarzania, ale oglądanie obrazu w OpenCV daje bardzo czarny obraz, z tylko kilkoma obszarami ciemnoszarego i białego. Obraz opencv przypomina rzeczywisty obraz, ale w znacznie ciemniejszych odcieniach. – Andrw

Odpowiedz

10

Nazwa RAW pochodzi z faktu, że wartości przechowywane w pliku nie są wartościami RGB piksela, ale wartościami nieprzetworzonymi, które zostały zmierzone na podstawie samej kamery. Wartości mają znaczenie tylko wtedy, gdy wiesz, jak działa kamera. Istnieją pewne standardy, ale tak naprawdę powinieneś po prostu uznać RAW za zbiór słabo zdefiniowanych, nieudokumentowanych, zastrzeżonych formatów, które prawdopodobnie nie będą intuicyjnie pasować do żadnego pomysłu jaki masz na temat przechowywania zdjęć.

Wyjazd Dcraw - to kod, który prawie każdy program, który obsługuje RAW korzysta

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

Autor odwrotnej inżynierii i wdrożone niemal każdą własnego formatu RAW - i utrzymuje ją na bieżąco.

1

zapomniał, co R/G/B z 16-bitowych był następujący:

"nie może być 5 bitów czerwonego, 6 bitów na zieloną i 5 bity Blue"

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

Zauważyłem, że był używany w kodzie gry wcześniej.

Pełne ujęcie w ciemności, ponieważ jest również dostępny w zastrzeżonych formatach RAW.

+0

Dzięki za sugestię, wypróbuję to! – Andrw

3

Inne odpowiedzi są poprawne, RAW nie jest standardem, jest skrótem. CCD aparatu często nie mają osobnych pikseli czerwonego, zielonego i niebieskiego dla każdego piksela, zamiast tego będą używać tego, co nazywa się Bayer Pattern, a następnie zapisują tylko wartości pikseli tego wzoru. Następnie musisz przekonwertować ten wzorzec na wartości rgb.

Również na pytanie premiowej, jeśli jesteś po prostu próbuje konwertować obraz RGB na skalę szarości, czy coś takiego, możesz użyć operatorów Matrix, lub zadzwoń convertTO