Strona głównaArtykułyFizjologia

Równowaga kwasowo-zasadowa

pH krwi jest ściśle kontrolowane.

mysimulator teamZaktualizowano — czerwiec 2026≈ 8 min czytania▶ Otwórz symulację

Każda technika zaczyna się od tej samej liczby: jasność

Pod ASCII artem, photomosaikami, stipplingiem i ditheringiem jest to zawsze pierwszy krok: redukcja piksela koloru do pojedynczej wartości jasności. Oko jest znacznie bardziej wrażliwe na zielony niż na czerwony lub niebieski, dlatego naiwne uśrednianie trzech kanałów wygląda nieprawidłowo – standardowa formuła niemiłosiernie je odchyla, zbliżając się do L = 0.299R + 0.587G + 0.114B (współczynniki jasności ITU-R BT.601 używane w transmisji telewizyjnej). Każdy poniżej algorytm operuje na tym pojedynczym wyznaczonym kanale, a następnie oddzielnie decyduje, jak reprezentować każdą wartość jasności jako atrament, kropek lub znaków.

demo na żywo · powiązana symulacja● LIVE

Sztuka ASCII: ranking znaków według pokrycia tuszem

Konwerter ASCII nie próbuje dopasowywać kształt liter do cech obrazu — dopasowuje pokrycie tuszem. Każdy kandydat na znak jest renderowany jako mały bitmap, liczy się ułamek pikseli ciemnych i zestaw znaków jest sortowany według tego ułamka: spacja ma zerowe pokrycie, kropka trochę, a @ lub # prawie pełne pokrycie. Następnie średnie luminancje każdej komórki obrazu są mapowane na tę posortowaną listę. Ponieważ czcionki monospace są w przybliżeniu dwa razy wyższe niż szerokie, komórki są zazwyczaj próbkowane jako prostokąty zamiast kwadratów, aby wynik nie wyglądał wklęsło pionowo.

Fotomosaiki: najbliższy sąsiad w przestrzeni kolorów

Fotomosaika zastępuje każdy tile (element) obrazu źródłowego małym miniaturką wybraną z biblioteki, dobraną tak, aby pasowała do średniego koloru tego tile'a. Obliczanie średnich RGB dla wszystkich elementów bibliotecznych należy wykonać raz, a następnie dla każdego tile'a w obrazie docelowym należy przeprowadzić wyszukiwanie najbliższego sąsiada w tej przestrzeni kolorów. Często stosowaną metodą poprawy jest mieszanie przezroczystej warstwy koloru oryginalnego tile'a z wybraną miniaturką – to zbliża miniaturkę do dokładnego koloru celu i ukrywa widoczne szczeliny między elementami, które są tylko przybliżonym dopasowaniem.

Stippling: Algorytm Lloyda sprawia, że kropki wyglądają jak narysowane ręką

Ważone stippling Voronoi (Secord, 2002) rozrzuca punkty z gęstością proporcjonalną do jasności obrazu, a następnie wielokrotnie je relaksuje: buduje diagram Voronoi dla aktualnych punktów, przesuwa każdy punkt do ciemnosciowo ważonego centroida swojej komórki i powtarza.

Powtórz N razy: komórki = voronoi(punkty) dla każdej komórki c, punktu p w komórkach: p.x, p.y = weighted_centroid(c, pole_ciemnosci) // Relaksacja Lloyda Jest to algorytm Lloyda, ta sama iteracyjna relakswacja używana do budowy centroidalnych tesselațiilor Voronoi dla generowania siatki i k-means clustering. Po kilku iteracjach punkty rozkładają się w wzorzec przypominający szum niebieski – równomiernie rozmieszczone bez widocznego zlepiania lub wyrównania siatki, a jednocześnie koncentrują się tam, gdzie obraz jest ciemny, co dokładnie robi artysta stippling z piórkiem i tuszem, patrząc na oko.

repeat N times:
  cells = voronoi(points)
  for each cell c, point p in cells:
      p.x, p.y = weighted_centroid(c, darkness_field)   // Lloyd relaxation

Rozmycie: Dystytucja Floyd-Steinberga

Redukcja obrazu do dwóch tonów (czysty czarny i biały) poprzez proste zaokrąglenie każdego piksela niszczy odcienie pośrednie. Dystytucja Floyd-Steinberga (1976) rozwiązuje ten problem, traktując zaokrąglenie jako stratę i przekazując tę stratę dalej: po kwantyzacji piksela, różnica między jego rzeczywistą wartością a używaną wartością jest rozkładana na sąsiadujące, nieprzetworzone piksele z ustalonymi wagami.

old = pixel[x][y] new = round_to_palette(old) pixel[x][y] = new err = old - new pixel[x+1][y ] += err * 7/16 pixel[x-1][y+1] += err * 3/16 pixel[x ][y+1] += err * 5/16 pixel[x+1][y+1] += err * 1/16 Przeskanowane od lewej do prawej, od góry do dołu, to rozprasza 16 szmigrzelek błędu za każdy piksel, więc żaden błąd nie jest tworzony ani niszczony – tylko przekształcany – a średnia jasność lokalna zbliża się do oryginalnej. Alternatywą jest uporządkowana dystytucja (stała macierz progowa Bayer ułożona w regularny wzór na całym obrazie), która jest szybsza i nie wymaga zależności sekwencyjnej, ale generuje widoczny okresowy wzorzec zamiast organicznie wyglądającego szumu dystytucji rozpraszania błędów.

old = pixel[x][y]
new = round_to_palette(old)
pixel[x][y] = new
err = old - new
pixel[x+1][y  ] += err * 7/16
pixel[x-1][y+1] += err * 3/16
pixel[x  ][y+1] += err * 5/16
pixel[x+1][y+1] += err * 1/16

Frequently asked questions

Dlaczego dithering Floyd-Steinberga wygląda lepiej niż po prostu zaokrąglanie każdego piksela?

Samodzielne zaokrąglanie każdego piksela do najbliższego dostępnego odcienia powoduje utratę informacji – piksel, który powinien być na 40% szary, staje się albo czarny, albo biały bez żadnej pamięci o tym 40%. Rozpraszanie błędów przenosi ten nadmiarowy 40% (lub -60%) do sąsiednich pikseli, dzięki czemu średni jasność w dowolnym obszarze jest zachowany, mimo że każdy indywidualny piksel jest czarny lub biały.

Jakie jest różnicowe stippling w porównaniu z po prostu losowym rozrzutem kropek według jasności?

Prymitywne losowe rozmieszczanie kropki powoduje ich zagęszczenie przypadkiem, co postrzegane jest jako szum zamiast tonalność. Stippling z wykorzystaniem ważonych Voronoi relaksuje pozycje kropek przy użyciu algorytmu Lloyda, tak aby każda kropka znajdowała się w centroidzie własnej ważonej komórki – to wyrównuje rozmieszczenie (jak przypominające szum niebieski) a gęstość kropel nadal śledzi ciemność obrazu, co sprawia, że wygląda jak narysowany ręcznie zamiast losowo.

Dlaczego konwertery ASCII art wykorzystują gęstość znaków zamiast rzeczywistych kształtów liter?

Ponieważ przy danej odległości i rozmiarze czcionki, oko czyta pokrycie – ile tuszu umieszcza znak w swojej komórce – a nie indywidualne formy liter. Klasyfikowanie zestawu znaków według średniej gęstości pikselowej (przestrzeń, następnie znaki interpunkcyjne, następnie litery, a na końcu symbole takie jak @ i #) oraz mapowanie jasności na tę listę pozwala wiernie odtworzyć gradienty tonalne, co samo dopasowywanie kształtów nie byłoby w stanie.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Computational Photo Art i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację Computational Photo Art

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)