logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zmiana sygnału od pewnego progu

Asver 16 Sie 2010 00:43 1284 6
REKLAMA
  • #1 8402767
    Asver
    Poziom 10  
    Dobry wieczór.
    Zajmuję się projektem związanym z eksponowaniem krawędzi na czarno-białych zdjęciach. Zaimplementowałem pewien algorytm i daje zadowalające wyniki - ma jednak jeden mankament - dość mocno "przerzuca" wartości skali szarości - tzn jeżeli skala jest z przedziału 0-1 to tam, gdzie są mocne krawędzie daje np. 1.5 w całym obszarze. Powoduje to białą plamę, kiedy mi chodzi o maksymalne zachowanie szczegółów.
    Dodam że zwykłe znormalizowanie psuje cały efekt. Znormalizowanie od pewnej granicy powoduje niedopuszczalne skoki na obrazie.
    Wpadłem więc na pomysł zmiany wartości skali szarości w sposób przedstawiony na dołączonym obrazku i, ku swojemu całkowitemu zdumieniu, siedzę nad tym drugi dzień nie mogąc uzyskać tego efektu, aby chociaż zobaczyć czy dobrze kombinuje...
    Jeżeli ktoś ma jakiś pomysł - z chęcią go wypróbuję. Dodatkowo, jeżeli ktoś ma jakiś inny pomysł - również z chęcią go przetestuję. :)

    Zmiana sygnału od pewnego progu

    Wytłumaczenie obrazka :
    - czarna linia to efekt działania algorytmu - dajmy na to płynne gradientowe cieniowanie. Jak widać jednak przekracza jedynkę (oznaczono ciemniejszą przerywaną linią), w związku z czym wszystkie wartości powyżej niej są jednolicie białe.
    - niebieska i zielona linia - oznaczają dwie moje koncepcje, jak powinien zostać zmodyfikowany wynik algorytmu - cały sęk w tym że nie wiem jak je osiągnąć. :)
    - jaśniejsza przerywana linia - próg od którego powinna zajść zmiana.

    Jeszcze raz proszę o jakieś sugestię.
  • REKLAMA
  • #2 8402843
    SP8JZ
    Poziom 33  
    O kurde kolego ale mnie zagiąłeś, każdy ma prawo czegoś nie wiedzieć - ja też. Ale spytam skromnie:
    Nie pomyliło Ci się coś ?
  • REKLAMA
  • Pomocny post
    #3 8402892
    piotr5000
    Poziom 21  
    jeżeli poziom cienkiej linii przerywanej oznacze jako A , wartośc obliczoną B ( czarna linia ) to nowa wartość Y ( niebieska linia ) będzie w przybliżeniu równa

    Y = (B - A) /2

    oczywiście warunek tylko gdy B>A

    Aby otrzymać wykres "zielony" kombinowałbym z 1/(B-A ) + "cośtam "
  • REKLAMA
  • #4 8403687
    Asver
    Poziom 10  
    Ha! Wiedziałem że jakieś nowe pomysły mi pomogą.
    Dzięki wielkie, piotr5000. :) Co prawda Twój wzór nie robi dokładnie tego, czego chciałem (też "przerzuca"), ale wykresik wygląda na serio prawie identycznie.
    W końcu wymyśliłem formułę działającą ok:
    Y = A + (1-A)*(B-A)/(MAX(B)-A)
    Dość luźno, ale jednak opiera się na Twojej. :D
    Wyniki działania algorytmu są o niebo lepsze, jednak więcej spodziewałbym się po zielonej linii... a za pomocą Twojej drugiej formuły udaje mi się jedynie narysować cukierka... :P
    Zmiana sygnału od pewnego progu
    Dlatego też temat ciągle otwarty!
  • REKLAMA
  • #5 8403824
    piotr5000
    Poziom 21  
    Jężeli max wartość jest = 1 to weź pod uwagę że :

    jeśli przyjmiemy dla uproszczenia A = 0,6

    to wartości w/g Twojej formuły będą w przedziale 0,6 ... 1,0

    Z = Y - A

    Z będzie zmieniać sie w zakresie 0 .... 0,4
    Z * 2,5 = Zz w przedziale 0...1

    Jeśli Zz ^ 2 to "ugięcie wykresu będzie przeciwne niż "niebieski"

    Musisz pokombinować z metodą mieszaną
  • #6 8403866
    Asver
    Poziom 10  
    No tak, zapomniałem dodać, że stosuje to dla wartości wynikowych większych od progu (A). :) Reszta jest jak była.
    Mankamentem tego podejścia jest spłycanie kolorów - wysokie wartości się "ścieśniają" - nie ma między nimi odpowiedniej różnicy, wyglądają jednolicie. :/
  • #7 8406157
    arturt134
    Poziom 27  
    Poszukaj na googlach o korekcji gamma - to klasyczny przykład. Na pewno znajdziesz jakąś gotową funkcję, dopasowaną do oka ludzkiego.
REKLAMA