Strona 1 z 1

Pomoc w konwertowaniu obrazu 24-bitowego na 8-bitowy

: 11 mar 2015 09:39
autor: Łukasz_789
Witam wszystkich,

Piszę aplikację w labview w której potrzebuję wykonać rzecz następującą: otóż po wczytaniu do aplikacji obrazu 24-bitowego potrzebuję aby aplikacja przekonwertowała ten obraz na postać 8-bitową. Oczywiście wiem taką operację można wykonać w zewnętrznej aplikacji np. Irfanview, photoshop. jednak takie aplikacje nie wchodzą w grę, ponieważ one konwertują obraz "nienaturalnie" przez co wartości pikseli są zbyt niskie i moja aplikacja nie działa dobrze. Czy można taki obraz przekonwertować za pomocą narzędzi dostępnych w labview?? Myślałem o tym aby wyciągnąć z obrazu składowe rgb każdego piksela i potem użyć funkcji RGB to color, jednak funkcja ta zwraca zbyt wysokie wartości, a mnie interesuje aby wartość koloru po konwersji mieściła się w zakresie 0-255. Czy ktoś ma może pomysł jak przekonwertować obraz z 24 bit na 8 bit. Dodam że nie interesuje mnie konwersja z rgb na skale szarości. Z góry dziękuję za pomoc ;)

Pozdrawiam!

Re: Pomoc w konwertowaniu obrazu 24-bitowego na 8-bitowy

: 11 mar 2015 15:47
autor: koofaya
Jeżeli masz ten obraz zapisany w *.jpg, to sam bloczek Read JPEG File ma wejście use 8 bit color table, które po podłączeniu TRUE konwertuje domyślny obraz 24-bitowy do postaci 8-bitowej.

W innym wypadku możesz po prostu przeskalować wartość każdego piksela do zakresu <0,255>, a następnie przekonwertować do unsined 8-bit integer.

Ja wykorzystywałem LV jedynie do wykreślania rysunków, natomiast nigdy nie próbowałem wczytywać, a następnie przetwarzać obrazu. Pewnie są do tego jakieś toolboxy (zapewne płatne). Pewnie na tym forum takie stwierdzenie uchodzi za zbrodnię, ale ja bym robił przetwarzanie obrazów w MATLABie =P.

Re: Pomoc w konwertowaniu obrazu 24-bitowego na 8-bitowy

: 11 mar 2015 18:39
autor: Łukasz_789
Witam,

Dziękuję za odpowiedź. A mógłbyś powiedzieć dokładnie co rozumiesz poprzez stwierdzenie: "W innym wypadku możesz po prostu przeskalować wartość każdego piksela do zakresu <0,255>, a następnie przekonwertować do unsined 8-bit integer." Z góry dziękuję za odpowiedź!

Pozdrawiam!

Re: Pomoc w konwertowaniu obrazu 24-bitowego na 8-bitowy

: 11 mar 2015 19:49
autor: PiDi
24-bitowy obraz to po prostu 8 bitów R, 8 bitów G, 8 bitów B. Rozbij tę liczbę na bity (Number to boolean array), wyciągnij poszczególne składowe (Array subset), skonwertuj je na U8 (Boolean array to number), wyciągnij średnią - i masz "szarą" wartość piksela.

Czasem modyfikuje się to wyciąganie średniej na wersję ważoną, która lepiej oddaje percepcję człowieka. Wtedy używa się wzoru:
0.2 R + 0.72G + 0.07B
Dlaczego tak i jakie jeszcze tajemnice kryje konwersja RGB do skali szarości - polecam internety.

Re: Pomoc w konwertowaniu obrazu 24-bitowego na 8-bitowy

: 11 mar 2015 22:48
autor: jogurt_owocowy
Czy ktoś ma może pomysł jak przekonwertować obraz z 24 bit na 8 bit. Dodam że nie interesuje mnie konwersja z rgb na skale szarości.
Chodzi Ci o konwersję obrazu RGB na obraz indeksowany?
Zobacz przykład w załączniku.
24-bit to 8-bit Image Conversion Example.png
24-bit to 8-bit Image Conversion Example.png (25.9 KiB) Przejrzano 9078 razy