eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingResize obrazka w roznych skalachResize obrazka w roznych skalach
  • Path: news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!plix.pl!newsf
    eed1.plix.pl!aotearoa.belnet.be!news.belnet.be!feed.xsnews.nl!border-1.ams.xsne
    ws.nl!feeder.news-service.com!feeder3.cambriumusenet.nl!feed.tweaknews.nl!209.1
    97.12.242.MISMATCH!nx01.iad01.newshosting.com!newshosting.com!newsfeed.neostrad
    a.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada
    .pl.POSTED!not-for-mail
    From: Maciej Pilichowski <P...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Resize obrazka w roznych skalach
    Date: Mon, 19 Apr 2010 14:25:31 +0200
    Message-ID: <o...@4...com>
    X-Newsreader: Forte Agent 1.93/32.576 English (American)
    MIME-Version: 1.0
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    Lines: 66
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 79.187.252.98
    X-Trace: 1271679930 unt-rea-b-01.news.neostrada.pl 17100 79.187.252.98:54285
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.comp.programming:185465
    [ ukryj 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





Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: