Pomoc w konwertowaniu obrazu 24-bitowego na 8-bitowy

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Łukasz_789
Posty: 2
Rejestracja: 03 sty 2015 15:01
Wersja środowiska: LabVIEW 2012

Pomoc w konwertowaniu obrazu 24-bitowego na 8-bitowy

Post 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!
Awatar użytkownika
koofaya
Posty: 38
Rejestracja: 23 sty 2014 14:51
Wersja środowiska: LabVIEW 2014

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

Post 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.
Łukasz_789
Posty: 2
Rejestracja: 03 sty 2015 15:01
Wersja środowiska: LabVIEW 2012

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

Post 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!
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

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

Post 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.
ObrazekObrazekObrazekObrazek
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

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

Post 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 9080 razy
Załączniki
24-bit to 8-bit Image Conversion Example.zip
LV 2012
(25.41 KiB) Pobrany 504 razy
ODPOWIEDZ