Konwersja (głębi) obrazu do 18-bit.
- gwozdex
- Użytkownik
- Posty: 879
- Rejestracja: 24 lut 2006, 10:04
- Lokalizacja: Czechowice-Dziedzice
- Kontakt:
Konwersja (głębi) obrazu do 18-bit.
Witam!
Ponieważ w dziedzinie obróbki obrazu jestem zupełnym laikiem proszę o poradę. Mianowicie potrzebuję napisać program który umożliwi zmiane atrybutów obrazu (popularne formaty *.jpeg, *.gif)
takich jak głębia kolorów (color depth) oraz rozmiar (Resize). O ile z drugim nie powinno byc problemów
to co do pierwszego mam wątpliwości. Sa co prawda dostępne programy jak FastStone oferujące zmianę głębi kolorów ale dostępna jest tylko głębia 8 bitów i 24 bity. Ja zaś potrzebuję 18 bitów (262144 kolory). Sprawdzałem dostępne komponenty w Delphi i VB 6.0 ale nie natrafiłem na zaden trop. Za pomoc z góry dziękuję.
Ps. Jeśli oczywiście znajdzie ktos gotowy program który jednak oferuje konwersje obrazu do 18 bitów to też bedzie super.
Ponieważ w dziedzinie obróbki obrazu jestem zupełnym laikiem proszę o poradę. Mianowicie potrzebuję napisać program który umożliwi zmiane atrybutów obrazu (popularne formaty *.jpeg, *.gif)
takich jak głębia kolorów (color depth) oraz rozmiar (Resize). O ile z drugim nie powinno byc problemów
to co do pierwszego mam wątpliwości. Sa co prawda dostępne programy jak FastStone oferujące zmianę głębi kolorów ale dostępna jest tylko głębia 8 bitów i 24 bity. Ja zaś potrzebuję 18 bitów (262144 kolory). Sprawdzałem dostępne komponenty w Delphi i VB 6.0 ale nie natrafiłem na zaden trop. Za pomoc z góry dziękuję.
Ps. Jeśli oczywiście znajdzie ktos gotowy program który jednak oferuje konwersje obrazu do 18 bitów to też bedzie super.
@c4r0: łopatologicznie, ale niepoprawnie - masz 3 adc 8 bitowe po 1 na każdy kolor: czerwony, zielony i niebieski. W sumie dadzą 24 bitową paletę barw. Jeśli chcesz uzyskać paletę barw 18 bitową, to stosujesz 3 przetworniki 6 bitowe i wówczas masz 3 * 6 = 18. W przetworniku 8 bitowym wartość napięcia wchodzącego jest reprezentowana przez liczby z zakresu 0-255, gdzie 0 to brak występowania danego koloru, a 255 to maksymalne nasycenie tego koloru. Przy przetworniku 6 bitowym zakres ten zawiera się pomiędzy liczbami 0 a 63. Trzeba będzie zaokrąglać i tu trzeba się będzie trzymać zaokrąglania albo w górę, albo w dół.
Jeszcze raz: o ile dobrze rozumiem nie jest tutaj problemem zamiana wartości opisujących kolory (to chyba jest proste ... ?), tylko ustawienie samego atrybutu w pliku o danym formacie. Nie chodzi o wartości dla poszczególnych pikseli, tylko o to gdzie i jak zapisać w jpegu lub gif-ie że zastosowana paleta jest 18-bitowa. O to chodzi gwozdex?
W ogóle to 18 bitów to dość dziwna wartość. Liczba pikseli musi być wielokrotnością czwórki żeby dało się zapisać dane na całkowitych bajtach.
W ogóle to 18 bitów to dość dziwna wartość. Liczba pikseli musi być wielokrotnością czwórki żeby dało się zapisać dane na całkowitych bajtach.
Pewnie kolegom chodzi tu o wyświetlacze TFT. które faktycznie obcinają z 24 do 18 bitów. jest to robione tam tak że po po prostu ignorowane są 2 najstarsze bit w każdym słowie. Przynajmniej tak to wygląda na poziomie sprzętu. Natomiast w programach konwertujących można już próbować kombinować. Najczęściej po prostu uśrednia się wartość dzieląc przez jakiś tam stały współczynnik, tu 4 jak zaproponował kolega. Ale moim zdaniem nie ma w plikach graficznych atrybutu palety 18-bitowej, zwyczajnie taki standard chyba nie istnieje, przynajmniej ja nigdy nie widziałem pliku o 18bitowej głębi koloru. A rozdzielczości kolorów wyświetalaczy to inna sprawa i nie mieszał bym tych 2 rzeczy. Robi się to po prostu tak że zapisuje się w 24 bitach i przy odczycie uśrednia tę wartość dzieląc wynik przez 4. Najszybciej te dzielenie zrobić przesuwając wartość o 2 bity, chyba w prawo to dzielenie.