-
Data: 2010-04-19 12:25:31
Temat: Resize obrazka w roznych skalach
Od: Maciej Pilichowski <P...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Hej,
Pytanie lamerskie, ale mam zacmienie i nie moge ruszyc z miejsca.
UPRASZCZAJAC:
Mam tablice 2d (obrazek) i mam ja przeskalowac do drugiej tablicy 2d
o innych wymariach. Zeby nie macic, skala zmiany w obu wspolrzednych
jest ta sama.
Jesli testuje procedure, to np. robie skalowanie x2 a nastepnie x0.5
i powinienem dostac optycznie mniej wiecej to samo.
A sama procedura jest prosta -- dla X i Y obliczam wspolczynnik
"skali" -- tj. wielkosc ostatniej wsp. X (lub Y) dla tablicy
wyjsciowej w stosunku do ostatniej wsp. z tablicy oryginalnej.
Pozniej iteruje po wszystkich punktach z tablicy wyjsciowej, licze
jakie sa odpowiedniki wsp. w tablicy oryginalnej i przepisuje wartosci
(+wygladzanie). Mniejsza o artefakty.
Ok, jak do tej pory dziala.
Ale teraz chcialbym nie miec skali tylko liniowej, ale potegowa (no
i odwrotnosc -- logarytmiczna). W ogolnosci skalowanie jest jakas tam
funkcja.
Obliczenie skali i wsp. oryginalnych (dla X) wyglada tak:
// input, prefix i -- wejscie
// output, prefix o -- wyjscie
var ratiox = ((double)input.Width() - 1) / func(output.Width() - 1);
var ix = func(ox) * ratiox;
Jesli chce skale potegowa, to np. wrzucam jako func
i => Math.Pow(2, i) - 1 // 2^i-1
a jesli logarytmiczna
i => Math.Log(i+1,2) // log2 (i+1)
Dziala, kompiluje sie, obrazki sie generuja.
PROBLEM: procedura skalowania logarytmicznego nie jest "odwrotnoscia"
skalowania potegowego (i vice versa). Nie chodzi mi tu o detale takie
jak artefakty 1 pixela. Znieksztalcenia dotycza obrazu jako calosci.
Np. obecnie jesli dam skalowanie potegowe, a pozniej logarytmiczne, to
musze wrzucic jeszcze raz skalowanie potegowe, aby dostac zrodlowy
obrazek.
Jesli zaczne od skalowania logarytmicznego, to musze kilkanascie razy
aplikowac skalowanie potegowe, aby dostac zrodlo.
Rzecz jasna cos musialem przeoczyc, tylko co? :-) Z gory dzieki za
naprowadzenie.
milego dnia, hej
Następne wpisy z tego wątku
- 20.04.10 20:58 Michoo
- 21.04.10 05:52 Maciej Pilichowski
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-01-06 Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- 2025-01-06 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-01-06 Do IO i innych elektrooszolomow, tu macie prawdziwe smrody
- 2025-01-06 Białystok => Full Stack .Net Engineer <=
- 2025-01-06 Kraków => Business Development Manager - Network and Network Security
- 2025-01-06 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-06 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-06 Lublin => Programista Delphi <=
- 2025-01-06 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-01-06 śnieg
- 2025-01-05 Żarówka do lampy z czujnikiem ruchu
- 2025-01-05 Rozkręcają się
- 2025-01-04 pozew za naprawę sprzętu na youtube
- 2025-01-04 gasik
- 2025-01-04 13. Raport Totaliztyczny: Powszechna Deklaracja Praw Człowieka Nie Chroni Przed Wyzyskiem Ani Przed Eksploatacją