@Stivo75: Transformata cosinusowa, jak i transformata fouriera, zamieniają obraz z domeny przestrzennej na częstotliwościową (z położenia pikseli na ich intensywność w wielkim skrócie). Po transformacji można z tej domeny wybrać elementy, które są widzialne i rozróżnialne przez człowieka i te, które nie wpłyną zbytnio na postrzeganą jakość zdjęcia. Kompresji (stratnej) dokonuje się eliminując te drugie. To tak w dużym skrócie.
@jansek: no, z tym nieuruchamianiem PSa to trochę przesadziłem :) ale matlab nadaje się do operacji na obrazach - obraz można przedstawić jako macierz, a matlab został stworzony do operacji na macierzach. Na moich studiach jako projekt do wykonania miałem korekcje zniekształceń kamery endoskopu w matlabie. Da się? Da.
@kretu: @DelPiedro Zwróćcie uwagę, że we wszystkich tabelach ilość kratek jest jednakowa, ale często mają one zupełnie inne znaczenia. Tabela Quantized pomnożona przez quantization table 11:09 zawiera dopiero "wagi fal", a nie końcowe wartości. Teraz należy każdą z nich pomnożyć przez odpowiednią klatkę z tabeli 4:00 (a ona zawiera już komplet "pikseli").
@DelPiedro: Przyjrzyj się tabeli DCT z 4:00, co ona przedstawia? To kluczowy moment aby to zrozumieć. Zawiera 64 kratki, a w każdej z nich 64 piksele. One nie są 1x1 tylko 8x8. To je mnożymy przez skalary i sumujemy. Mnożysz -23x16x(cała kratka w lewym górnym rogu) + (-2)x12x (cała kratka pikseli w drugiej kolumnie pierwszego wiersza) i tak w sumie 9 razy, bo reszta zerowa.
transformata DCT, kwantyzacja, kodowanie RLE to też elementy MPEG-2 i każdego następce w tym h.264 i h.265, więc de facto został wyjaśniony fragment dotyczący idei przetwarzania obrazu ruchomego (najczęście naturalnego). Można też wykorzystać falki jak w JPEG2000, ale JP2 ( ͡°͜ʖ͡°) się nie przyjął.
@Gottek: kiedys dawno temu chlopaki bodajze z MIT wymyslili taki sprytny patent na IDCT do jpega/mjpeg: ta tabelka ktora widac w 4:08 ma wiele powtarzajacych sie wartosci ktore mozna policzyc i wygenerowac kod ktory policzy wszystkie rozne wartosci i pododaje do wyniku we wlasciwych pozycjach (oczywiscie pomijamy calkowicie to co niepotrzebne bo skwantowane do zera) w ten sposob omijamy kupe mnozen. pomysl prosty ale nawet na 486 moglem tym dekodowac animacje
Komentarze (42)
najlepsze
wiem, to jeden z moich pierwszych "znalezisk" wiec nei mam wprawy.
dalem [angielski]
Mogłeś dać po niemiecku śmieszku, to dopiero byłby żarcik. ( ͡° ͜ʖ ͡°)
Zwróćcie uwagę, że we wszystkich tabelach ilość kratek jest jednakowa, ale często mają one zupełnie inne znaczenia.
Tabela Quantized pomnożona przez quantization table 11:09 zawiera dopiero "wagi fal", a nie końcowe wartości. Teraz należy każdą z nich pomnożyć przez odpowiednią klatkę z tabeli 4:00 (a ona zawiera już komplet "pikseli").
Mnożysz -23x16x(cała kratka w lewym górnym rogu) + (-2)x12x (cała kratka pikseli w drugiej kolumnie pierwszego wiersza) i tak w sumie 9 razy, bo reszta zerowa.
ta tabelka ktora widac w 4:08 ma wiele powtarzajacych sie wartosci ktore mozna policzyc i wygenerowac kod ktory policzy wszystkie rozne wartosci i pododaje do wyniku we wlasciwych pozycjach (oczywiscie pomijamy calkowicie to co niepotrzebne bo skwantowane do zera) w ten sposob omijamy kupe mnozen. pomysl prosty ale nawet na 486 moglem tym dekodowac animacje