Pochodne i krawędzie
20.04.2010 - Krzysztof Dryś
Więcej informacjiJak policzyć przybliżenie , czyli pochodnej względem drugiego argumentu? Tak samo jak liczyliśmy przybliżenie . Otóż . Oznacza to, że możemy tę pochodną szacować przez . Czy w ten sposób dowiemy się czegoś nowego o naszym obrazku? Najlepiej sprawdzić to na przykładzie. Popatrzmy na program:
Obrazek ma podobne wady, jak poprzednie. Ale jest trochę inny. To znaczy: inne punkty zostały oznaczone jako krawędzie. Czyli niesie ze sobą dodatkowe informacje, które możemy wykorzystać. Postaramy się to zrobić w następnym programie.
Obrazek wyprodukowany przez ten algorytm wygląda całkiem nieźle. Zastanówmy się jednak, jak spełnia założenia, które postawiliśmy sobie na początku. Krawędzie rzeczywiście mają szerokość jednego piksela. Jednak nie tworzą zamkniętych kształtów. Ponadto nasz algorytm wykrył nie tylko krawędzie, ale też dużo przypadkowych rzeczy - na przykład w lewej części obrazka widać dużo pojedynczych kropek, które zupełnie nie układają się w krawędzie! Lepsze przybliżenieNa koniec spróbujmy czegoś bardziej skomplikowanego. Do tej pory przybliżaliśmy przez . Możemy jednak znaleźć lepsze przybliżenia! Na przykład takie:
To oznacza, że jeżeli zmniejszy się dwa razy, to błąd przybliżenia zmniejszy się przynajmniej razy. Czyli to przybliżenie jest lepsze od tego, które stosowaliśmy poprzednio. Napiszemy teraz algorytm, który wykorzysta przybliżenia:
Dzięki zastosowaniu lepszego przybliżenia pochodnej, ten algorytm daje lepsze rezultaty. Krawędzie nie urywają się w połowie obrazka. Mniej jest też szumów. Za to część krawędzi jest grubsza - mają więcej niż jeden piksel szerokości. Co więcej, ten algorytm jest bardziej czasochłonny od poprzedniego, gdyż wyliczanie lepszego przybliżenia pochodnej zajmuje więcej czasu. (1 ocena) |
Copyright © 2008-2010 Wrocławski Portal Informatyczny
design: rafalpolito.com