atarionline.pl ASCI Art - program "pod" zestaw znaków 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:
         
        CommentAuthorxeen
      • CommentTime23 Nov 2012 12:11 zmieniony
       
      Jest jakieś narzędzie, które konwertuje rysunki do ASCI przy wykorzystaniu standardowego zestawu znaków ATARI XL/XE (odpowiednio układa znaki aby było maksymalne przybliżenie oryginału)? Na sieci jest masa konwerterów pod peze, znalazłem jakiś pod ST.
      • 2: CommentAuthorwieczor
      • CommentTime23 Nov 2012 12:11
       
      Algorytm konwersji jest prosty - przygotowujesz obraz w odcieniach szarości (256, 8 bitów) o rozdzielczości którą masz w znakach (np. 40 x 20 - standardowy ekran tekstowy lub wiecej jak chcesz scrollować). Znaki z generatora sortujesz wg ilości zapalonych w każdym z nich pikseli - spacja to 0 i przypisujesz każdemu pikselowi odpowiedni znak - im jaśniejszy piksel tym znak o większej ilości pikseli. Można sobie i w Basicu zrobić ;)
      • 3:
         
        CommentAuthorxeen
      • CommentTime23 Nov 2012 13:11 zmieniony
       
      Nie jestem przekonany do tego algorytmu, wydaje mi się (intuicyjnie), że np szachownica z 50% zapalonych punktów to inny "kolor" niż trójkąt z 50% zapalonych punktów.
      Poza tym jednym znakiem "konsolidujesz" kilka odcieni szarości (konkretnie 8x8 jeżeli rodzielczośc w pixlach jest 320x192)
      • 4:
         
        CommentAuthorDracon
      • CommentTime23 Nov 2012 13:11
       
      Niech więc WieczÓr napisze taki programik, w końcu staje się forumowym specjalistą od (prawie) wszystkiego. ;)
      • 5: CommentAuthorwieczor
      • CommentTime23 Nov 2012 14:11
       
      Niepotrzebna złośliwość, ja JESTEM specjalistą od wszystkiego ;) No dobra, żarcik. Co do algorytmu, to kiedyś się z tym bawiłem i o ile faktycznie znak wygląda inaczej, to patrzenie na matrycę znaków już to niweluje - mózg sobie uśrednia.

      Co do integrowania kilku pikseli pod jednym to jest klasyczny rescale - piksele które mają się stać jednym się uśrednia :) Dlatego mówiłem o obrazie 40x24 a nie 320x192. To można sobie zrobić wcześniej dowolnym programem do rescalowania grafiki - on uśredni za Ciebie.

      Są bardziej zaawansowane algorytmy, uwzględniające faktyczną zawartość znaku (np. obliczające jasność dla jego ćwiartek - znak obejmuje wtedy 4 piksele) ale robi się to skomplikowane - trzeba szukać takich czwórek.

      Inne podejście to wyodrębnienie krawędzi na obrazku i użycie w ich miejscu konkretnych znaków semigrafiki zawierające przybliżenie tych kawałków linii. Efekt jest zarąbisty ale widziałem tylko jedną eksperymentalną implementację na PC, bo zagadnienie jest wtedy nietrywialne ;)

      Typowe ASCII arty są robione wg algorytmu o którym napisałem.
      • 6:
         
        CommentAuthorxeen
      • CommentTime23 Nov 2012 14:11 zmieniony
       
      wydaje mi się, że:
      do konwersji biorę hiresowy przeskalowany obrazek 320x192, czyli 40x24 znaki.
      Dla każdych 8x8 pixeli z obrazka dopasowuję znak w taki sposób aby jak najbardziej się pokrywał - chyba proste.
      Mam smaka any coś takiego napisać - oby nie skończyło się jak zwykle na gadaniu ;)

      no i g2f wypluwa znaki, które musze tylko porównać z std Atari - znaku po znaku. no taca, panie.
      • 7: CommentAuthorwieczor
      • CommentTime23 Nov 2012 15:11 zmieniony
       
      Ekhm... Wiesz - to prawie to samo , tylko że ja sprawdzam "pokrywanie" się bloku 8x8 ze znakiem na zasadzie - jasność bloku 8x8 (uśrednione 64 pixele) = ilość zapalonych pikseli w znaku :) To jest właśnie sprawdzanie "pokrywania" - naturalnie to najprostszy algorytm i powszechnie stosowany daje dobre efekty - jednakże rozumiem , że chcesz coś bardziej wyrafinowanego typu wykrywanie linii w znaku i na obrazie, ambitny plan, życzę powodzenia (oczywiście jest to możliwe ale jak już pisałem nie trywialne :) Acha - no i obraz z odcieni szarości trzeba wstępnie sprowadzić do 320x192 w dwóch kolorach - w zależności od grafiki i gustu z ditheringiem lub progowaniem. Pętla sprawdzająca będzie oczywiście cięższa gdyż musisz przyrównać każdy blok 8x8 do każdego ze znaków, nie mówiąc już o samym przyrównywaniu w każdym obiegu. Ja po prostu obliczam średnią jasność i wybieram najbliższy znak z tablicy.

      Ok, na Atari tego nie napiszę, za długo by to trwało - dawno nie pisałem. Ale napiszę w PHP przykład poglądowy o co mi chodzi - oczywiście z zestawem znaków Atari (już wyciąłem ;) )
      • 8:
         
        CommentAuthorxeen
      • CommentTime23 Nov 2012 15:11
       
      prawie :) kwestia doboru znaku bez uśredniania....