atarionline.pl Narzędzie do ditheringu na Atari XL/XE - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1:
         
        CommentAuthorKaz
      • CommentTime26 Feb 2026 09:11
       
      Autorem jest Amarok:

      • 2:
         
        CommentAuthorjhusak
      • CommentTime26 Feb 2026 10:28
       
      Zajebiste. To część Photoshopa już jest :)
      • 3: CommentAuthortebe
      • CommentTime26 Feb 2026 10:34
       
      wycyzelowane
      • 4: CommentAuthorilmenit
      • CommentTime26 Feb 2026 11:00
       
      Fajne!
      • 5:
         
        CommentAuthoramarok
      • CommentTime26 Feb 2026 15:47 zmieniony
       
      Wielkie dzięki za założenie wątku i Wasze komentarze. :)

      Wstęp
      Program ditherlab jest narzędziem dla 8-bitowych komputerów Atari XL/XE wyposażonych w co najmniej 128kB pamięci RAM, który powstał w ramach ABBUC Software Competition Applications 2026. Program będę mógł opublikować dopiero po ogłoszeniu wyników konkursu.

      Program służy do przetwarzania monochromatycznych obrazów o 256-ciu poziomach jasności do formatu zgodnego z jednym z trzech dostępnych trybów graficznych dla tej rodziny komputerów: GR8, GR9 i GR15.

      Dzięki technice zwanej ditheringiem jest w stanie zredukować liczbę poziomów jasności do 16-tu, 4-ch lub 2-ch z zachowaniem odpowiedniej szczegółowości obrazu.

      Dithering
      Dithering w grafice komputerowej to technika pozwalająca na osiągnięcie wrażenia większej ilości kolorów używając ich ograniczonej ilości.

      Jest wiele znanych algorytmów, które generują wynik poprzez wprowadzanie bardziej lub mniej regularnych zaburzeń w treści obrazu.

      Grafika dla 8-bitowych komputerów bardzo często tworzona jest z uwzględnieniem technik ditheringu, jednak zazwyczaj przetwarzanie obrazu jest realizowane na bardziej zaawansowanych komputerach zawierających mocniejsze procesory i więcej pamięci RAM.

      Program ditherlab jest narzędziem, które pozwala uzyskać zamierzone efekty bezpośrednio i natywnie na 8-bitowym komputerze Atari bez używania mocniejszego sprzętu.

      Opis ogólny
      Aplikacja posiada 16 różnych metod do przetwarzania obrazów. Wśród nich jest 6 algorytmów z rodziny ordinal dithering, które wykorzystującą z góry zdefiniowane wzorce zaburzeń pikseli takich jak macierze Bayer.

      Poza tym dysponuje 10-cioma metodami z kategorii error-diffusion, w których następuje propagacja różnicy w kolorach na sąsiadujące piksele. Jednym z najbardziej znanych algorytmów jest Floyd-Steinberg dithering.

      Program odczytuje z dyskietki obrazy o rozdzielczości 256x192 piksele o 8-bitowej głębi. Pliki o rozszerzeniu .256 zawierają jedynie treść obrazu bez jakiegokolwiek nagłówka a ich rozmiar to 48 kB.

      Ze względu na dość spory rozmiar tych danych do działania programu wymagana jest pamięć co najmniej 128 kB, którą posiada np. Atari 130XE.

      Obsługa programu
      Program obsługuje się poprzez wybieranie odpowiednich funkcji z menu przy pomocy dżojstika lub klawiatury.

      Klawisz Tab oraz Shift+Tab pozwalają na przejście do następnej lub poprzedniej pozycji w menu. Podobnie klawisze strzałek oraz kierunki dżojstika umożliwiają nawigację w czterech kierunkach.

      Klawisz Return oraz przycisk Fire otwierają podmenu lub uruchamiają wybraną w nim funkcję. Natomiast klawisz Esc wychodzi do menu głównego.

      Można także szybko wybrać daną pozycję wciskając na klawiaturze znak, który jest podkreślony w etykiecie żądanego elementu menu.

      Menu
      Menu Load pozwala załadować jeden z kilku obrazów na dyskietce.

      Z kolei menu Save pozwala zapisać wynik widoczny na ekranie do pliku na dyskietce w postaci zrzutu pamięci z obszaru pamięci ekranu.

      Menu Mode daje możliwość wyboru jednego z trzech trybów graficznych: 256x192 z dwoma kolorami, 128x192 z czterema kolorami lub 64x192 z 16-ma poziomami jasności.

      Kolejne dwa menu pozwalają wybrać żądanie algorytm ditheringu. Podczas przetwarzania obrazu widoczna jest odpowiednia informacja u dołu ekranu a po zakończeniu czas obliczeń.

      Są dostępne także ustawienia w menu Setup. Można zmienić kolor obrazu oraz menu. Poza tym można zdecydować czy obraz ma być zawsze czyszczony w momencie rozpoczęcia jego przetwarzania. Jest też możliwość ustawienia wyłączania wyświetlania ekranu podczas obliczeń, żeby przyspieszyć działanie programu.

      Informacje techniczne
      Program został napisany w języku MadPascal, jednak najbardziej wymagające obliczeniowo funkcje zostały przygotowane w assemblerze.

      Mimo wszystko algorytmy wymagają sporej ilości obliczeń ze względu na sumaryczną liczbę pikseli do przetwarzania. Poza tym w niektórych przypadkach obliczenia muszą być wykonywane na liczbach 16-bitowych. Dlatego czas działania pewnych metod może wynosić kilkanaście sekund lub nawet dłużej.

      Na czas obliczeń wpływa również fakt, że obraz wejściowy jest przechowywany w pamięci rozszerzonej i jest kopiowany linia po linii do pamięci podstawowej.

      Dodatkowo w przypadku trybu 2-bit i 4-bit jasności każdej kolejnej pary lub czwórki pikseli w linii są uśrednione i dopiero takie dane są poddawane algorytmom graficznym.

      Na końcu należy jeszcze zakodować wynik, żeby był zgodny z formatem danego trybu graficznego.

      Obrazki
      Na dyskietce znajduje się 6 obrazów. Pliki te powstały poprzez konwersję oryginalnych zdjęć do postaci monochromatycznej, poprawę jakości np. poprzez korektę histogramu jasności lub przefiltrowanie, zmianę geometrii np. wykadrowanie, obrócenie oraz przeskalowanie do docelowej rozdzielczości,

      Zdjęcia head oraz king zostały wykonane przeze mnie osobiście, natomiast pozostałe pochodzą z przestrzeni publicznej z Wikimedia Commons, w szczególności:

      https://commons.wikimedia.org/wiki/File:Rosa._Onbenaamde_cultivar_(actm)_01.jpg
      https://commons.wikimedia.org/wiki/File:Johannes_Vermeer_(1632-1675)_-_The_Girl_With_The_Pearl_Earring_(1665).jpg
      https://commons.wikimedia.org/wiki/File:Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg
      https://en.wikipedia.org/wiki/File:Lenna_(test_image).png
      • 6:
         
        CommentAuthorjhusak
      • CommentTime26 Feb 2026 16:03
       
      Takie drobne pytanko - dlaczego obraz wąski? Tzn, 256, 128 czy 64 piksele?
      • 7:
         
        CommentAuthoramarok
      • CommentTime26 Feb 2026 17:07
       
      To jest świadomy wybór. Są co najmniej dwa powody dlaczego 256 a nie 320.

      Po pierwsze mniejszy rozmiar obrazu bo 48kB a nie 60kB. Zatem więcej miejsca w pamięci dla programu oraz mniej pikseli do obróbki, więc nieco szybszy processing. Dla 320 pikseli program wymagałby więcej RAMu lub po prostu byłby znacznie uboższy a tego chciałem uniknąć.

      Po drugie współrzędna pozioma mieści się w jednym bajcie a nie dwóch, więc wszelkie indeksowania są znacznie szybsze a tym samym processing danych.

      Głównym celem programu było sprawdzenie czy da się łatwo zaimplementować algorytmy do ditheringu i jak szybko będą generowały wyniki. Obrazy są węższe, ale nie przeszkadza to samej koncepcji. Za to mogłem przy okazji pobawić się innymi efektami graficznymi w programie, żeby wyglądał bardziej atrakcyjnie.
      • 8:
         
        CommentAuthorMq
      • CommentTime26 Feb 2026 18:41
       
      Bardzo zdrowo-logiczne podejście. Udany projekt, chylę czoła :-)
      • 9:
         
        CommentAuthorCyprian
      • CommentTime26 Feb 2026 19:18
       
      @amarok fajny pomysł,
      swoją drogą jak obniżasz rozdzielczość obrazka? najbliższy piksel czy jakieś rozmycie?
      • 10:
         
        CommentAuthorgienekp
      • CommentTime26 Feb 2026 19:57
       
      Świetnie to wygląda. Czy te algorytmy to są Twoje, czy można gdzieś je znaleźć na sieci?
      • 11: CommentAuthorilmenit
      • CommentTime26 Feb 2026 20:03 zmieniony
       
      To popularne algorytmy. Dla zainteresowanych tematem fajna strona ->link<- , ->link<-
      • 12: CommentAuthortebe
      • CommentTime26 Feb 2026 20:26
       
      www.algorytm.org

      ->link<-
      • 13:
         
        CommentAuthoramarok
      • CommentTime26 Feb 2026 22:58
       
      @Mq, wielkie dzięki za uznanie. :)

      @Cyprian, jeśli chodzi o obniżenie rozdzielczości to każda kolejna dwójka (dla GR.15) lub czwórka (dla GR.9) pikseli jest brana do obliczenia średniej arytmetycznej z ich jasności. Zatem wszystkie piksele z obrazu źródłowego są pośrednio brane pod uwagę w generowaniu wyniku.

      @ilmenit, rewelacyjne są te prezentacje, którą podesłałeś - bardzo dobrze wyjaśniają na czym polega dithering, zwłaszcza dla początkujących.

      @tebe, dzięki za podrzucenie linku z opisami algorytmów. Widać, że również tam Lena gra główną rolę. Dziewczyna pewnie nie wiedziała, że stanie się tak popularna wśród osób, które zajmują się grafiką komputerową :D
    1.  
      Super ! Szkoda że takiego ficzera nie ma w g2f.No i jeszcze jakby można było obszar wyznaczać do ditheringu.Tak czy inaczej bardzo fajne !
      • 15: CommentAuthorAdam
      • CommentTime26 Feb 2026 23:37
       

      amarok:

      (...) Widać, że również tam Lena gra główną rolę. Dziewczyna pewnie nie wiedziała, że stanie się tak popularna wśród osób, które zajmują się grafiką komputerową :D


      Zapytałem Google'owe AI jak Lena zareagowała na nieoczekiwaną sławę, odpowiedź dostałem taką:

      AI:

      Lena Forsén, the Swedish model whose 1972 Playboy centerfold became the standard test image for digital image processing ("Lenna"), has had a shifting reaction to her unexpected fame as the "First Lady of the Internet."

      - Initial Pride: For decades, Forsén was generally fine with the use of the image, noting in 2019 that she was "really proud" of the photo and the immortality it gave her in the tech world.

      - Later Support for Retirement: As debates grew regarding the image's sexist origins and its impact on women in tech, Forsén shifted her stance. In 2019, she supported the "Losing Lena" campaign, stating, "I retired from modeling a long time ago. It's time I retired from tech, too".

      - Bewilderment and Regret: She has expressed, at times, being "bewildered" at what became of her image and mentioned a note of regret that she was not better compensated for its massive, decades-long, global use.

      In summary, while she was initially proud and amused by her role in tech history, she ultimately supported the movement to retire her image from academic and engineering journals to foster a more inclusive environment.
      • 16: CommentAuthortebe
      • CommentTime27 Feb 2026 01:09
       
      Atari Graphics Studio (AGS) ma dithering, można wczytać do niego grafikę i zapisać do pliku MCH, który można potem wczytać do G2F
    2.  
      hehe z tego programu który zrobił Amarok też można ... z innych też mozna, ale nie o to mi chodziło. Pisałem o takim ficzerze w samym G2f . Dziękuję....wiem, wiem ..nie to nie :)
      • 18: CommentAuthortebe
      • CommentTime27 Feb 2026 10:18
       
      nie wiem jak sobie wyobrażasz dithering 4 kolorów do 4 kolorów?
      a może ma sprity traktować jako bitmapę i usuwać je zastępując pikslami bitmapy z ditheringiem?

      dithering ma sens kiedy importujesz BPM/PNG 256 kolorów albo więcej do jednego z trybu Atari (2..16 kolorów)
      • 19:
         
        CommentAuthorjhusak
      • CommentTime27 Feb 2026 11:56
       
      Ale z tego co pamiętam, importować do G2f można cokolwiek, nie?
      • 20:
         
        CommentAuthorKaz
      • CommentTime27 Feb 2026 12:48
       
      Cokolwiek - to może wyjść sieczka.
    3.  
      ja nie o tym pisałem..no cóż..hehe..nie to nie.
      • 22:
         
        CommentAuthorKaz
      • CommentTime27 Feb 2026 18:22
       
      To się wyrażaj jasno, a nie półsłówkami jak baba - "weż się domyśl" :)