8

Photoshop ma wiele fajnych artistic filters i chciałbym zrozumieć podstawowe algorytmy.W jaki sposób zaimplementowano filtr wyłączania programu Photoshop?

Jednym z interesujących algorytmów jest filtr wycinków (numer 2 na powyższym łączu).

Ma trzy dostrajane parametry, liczbę poziomów, prostotę krawędzi i wierność krawędzi. Liczba poziomów wydaje się kierować prostym algorytmem posteryzacji, ale to, co inne slidery technicznie wymyka mi się.

Sądzę, że robią coś, co ma związek ze schematem Vornoi lub partycją k-średnich, ale wtrącanie się na wikipedii nie przyniosło niczego, co by wyraźnie odwzorowywało to, co robi Photoshop, zwłaszcza biorąc pod uwagę szybkość renderowania filtra samo.

Czy istnieje źródło technicznych opisów filtrów programu Photoshop? Alternatywnie, czy masz jakieś przemyślenia na temat tego, jak ten konkretny filtr może zostać zaimplementowany?

+0

Wow, te są fajne. Doceniam przetwarzanie obrazu znacznie więcej w te dni po pracy nad projektem, który wiązał się z niektórymi (chociaż moje zadania były mniej skomplikowane niż inne). –

Odpowiedz

0

Może nie dokładnie to, czego szukasz, ale jeśli chcesz wiedzieć, jak działają filtry, możesz sprawdzić kod źródłowy GIMP. Nie mogę powiedzieć, czy GIMP ma odpowiednik filtra wycięcia, o którym wspomniałeś, ale warto się przyjrzeć, jeśli naprawdę interesujesz się tą dziedziną.

+1

To był dobry punkt wyjścia dla dodatkowego googlowania, ale niestety GIMP nie ma wbudowanego ścisłego analogowego. Znalazłem fajną wtyczkę GIMP o nazwie [pspi] (http://www.gimp.org/~ tml/gimp/win32/pspi.html), który może załadować wtyczki do Photoshopa, ale Cutout to taki, który nie jest zaimplementowany w ten sposób :( – fastcall

6

Wykrywanie krawędzi to zwykle filtr Sobla lub Canny'ego, a następnie krawędzie są łączone razem z łańcuchem kodu.
patrzeć na coś podobnego do OpenCV biblioteki o szczegóły

0

liczba poziomów wydaje się przypominać jak cell-shading jest zrobione i jest to jak bym wdrożyć tę część, w tym przypadku: wystarczy skorzystać z histogramu obrazu i podziel go na liczbę sekcji "Liczba poziomów", a następnie obliczyć średnią dla każdej sekcji. Każdy kolor na histogramie będzie wykorzystywał tę średnią zamiast oryginalnego koloru.

Pozostałe dwa parametry wymagają nieco więcej myślenia, ale "Prostota krawędzi" zdaje się detonować liczbę segmentów, w których kształty są budowane. Lub raczej: liczba udoskonaleń zastosowanych do niektórych prostych algorytmów segmentacji obrazu. Suwak wierności wydaje się robić coś podobnego; Prawdopodobnie kontroluje pewien próg dla tego, kiedy należy wprowadzić udoskonalenia.

This might help

3

nie jestem pewien, może to być jakiś cel-shading, ale również wygląda mediana filtra o bardzo dużych rozmiarów jądra lub który był stosowany kilkakrotnie.

Prostota/wierność krawędzi może być opcjami, które pomagają zdecydować, czy wziąć pod uwagę sąsiedni piksel (lub taki, który wpada w jądro) na podstawie różnicy koloru z bieżącym pikselem.

+0

Myślę, że masz rację na miejscu z filtrem median. – flodin

0

Masz proste rozwiązanie, które teoretycznie dałoby coś podobnego do tego filtra. Jakoś podobne do tego, co sugerował Ismael C.

Krawędź Prostota reguluje rozmiar okna. Może okno powinno być ważone.

Ale w przeciwieństwie do zwykłych filtrów w oknach, z tego okna można pobrać tylko część pikseli o stałych rozmiarach. Rozmiar części jest kontrolowany za pomocą parametru Fidelity.

Ustaw kolor piksela na medianę próbki.

Biorąc pod uwagę, że mamy pewien algorytm posteryzacji, jest on stosowany później.

Tutaj idziemy!

Proszę podać wyniki, jeśli je wdrożysz.

PS. Naprawdę wątpię, czy w ogóle używa się segmentacji.

0

Wyobrażam sobie, że to pewna progresja, wykrywanie krawędzi (Sobel/Canny/Roberts/cokolwiek) i plakatizacja.

0

Od majstrować przy niej znalazłem, że:

  • jest deterministyczny
  • nie zrobić każdy rodzaj posteryzacji oparciu pikseli, aby osiągnąć efekt końcowy
  • to prawdopodobnie nie używa wszelkiego rodzaju wykrywanie krawędzi oparte na pikselach, wydaje się działać raczej w obszarach, a następnie krawędziach.
  • Oblicza kształty zamknięte wielokąty do rysowania (niektóre krawędzie wielokątu mogą pokrywać się z krawędziami obrazu).
  • kiedy znane są krawędzie wielokątów, kolor każdego obszaru zamkniętego na krawędziach (niekoniecznie przynależny do jednego wielokąta) jest barwiony średnim kolorem pikseli oryginalnego obrazu, który obejmuje obszar.
  • krawędź wielokąta może przecinać się z samym sobą. Wyjątkowo widoczny z dużą prostotą.
  • w miarę upuszczania "prostej linii" zwiększa się liczba krawędzi wielokątów, ale zwiększa się również liczba wielokątów.
  • krawędź Fidelity wpływy Liczba linii krawędzi wielokąta, ale nie wpływa na Impuls wielokąta
  • wysokiej krawędzi Fidelity (= 3) przy pojedynczej wielokąt ma bardzo długie, bardzo krótkie krawędzie, w tym samym czasie, niską dokładność (= 1) przy pojedynczej wielobok, aby mieć wszystkie krawędzie mniej więcej na podobnej długości:
  • Wysoka prostota i wiercenie o niskiej krawędzi wydają się preferować wielokąty zakotwiczone na krawędziach obrazu, nawet kosztem rozsądku.

Łącznie wygląda to jak uproszczona wersja algorytmu Live Trace z programu Adobe Illustrator, który zamiast krzywych używa wielokątów.

... a może nie.

Powiązane problemy