كيف تعمل خوارزميات تحويل الصور الفنية ASCII؟[مغلق]

StackOverflow https://stackoverflow.com/questions/394882

  •  23-08-2019
  •  | 
  •  

سؤال

هناك بعض مواقع تحويل "الصورة إلى فن ASCII" المجانية الرائعة مثل هذا الموقع: ASCII-art.org

كيف تعمل خوارزمية تحويل الصور هذه؟

                         ,                     
                     .   W    ,                
                     W   W    @                
                     W  ,W    W                
                  ,  W, :W*  .W  .             
                  #  WW @WW  WW  #             
                  W  WW.WWW  WW: W             
                  W. WW*WWW# WW@ W             
               * :WW.WWWWWWW@WWW@W  #          
              +* #WW#WWWWWWWWWWWWW# W          
              W# @WWWWWWWWWWWWWWWWW W          
              WW WWWWWWWWWWWWWWWWWW W          
              WW WWWWWWWWWWWWWWWWWW@W#         
             ,WW.WWWWWWWWWWWWWWWWWWWWW         
              WW@WWWWWWWWWWWWWWWWWWWWW         
            : WWWWWWWWWWWWWWWWWWWWWWWW :       
            @ WWWWWWWW@WWWWWWW@@WWWWWW.        
            W*WWWWWW::::@WWW:::::#WWWWW        
            WWWWWW@::   :+*:.   ::@WWWW        
            WWWWW@:*:.::     .,.:.:WWWW        
            @WWWW#:.:::.     .:: #:@WWW        
            :WWW@:#. ::     :WWWW:@WWWW        
             WWW#*:W@*@W     .   W:#WWW        
            #WWWW:@      ::   ::  *WWWW        
            W@WW*W  .::,.::::,:+  @@WW#,       
            WWWW## ,,.: .:::.: .  .WWW:,       
            @WWW@:   W..::::: #.  :WWWW        
             WWWW::  *..:.  ::.,. :WWWW        
             WWWW:: :.:.:   :  :: ,@WW@        
             WWWW:  .:,  :  ,,     :WW,        
             .: #         :  ,     : *         
              W +    .,  :::  .,   : @         
              W ::                .: W         
           @,,,W:.  ,, ::*@*:,  . :@W.,,@      
         +.....*: : : .#WWWWW:  : .#:....+,    
        @...:::*:,, : :WWWWWWW, ,  *::::..,#   
      :...::::::W:,   @W::::*W.   :W:::::...#  
     @@@@@@@@@@@W@@@@@W@@@@@@W@@@@@W@@@@@@@@@@:

هل كانت مفيدة؟

المحلول

المفهوم على مستوى الصورة الكبيرة بسيط:

  1. يمكن تعيين قيمة تقريبية للتدرج الرمادي لكل حرف قابل للطباعة؛علامة "في". @ من الواضح أنها أغمق بصريًا من علامة "زائد". +, ، على سبيل المثال.سيختلف التأثير، اعتمادًا على الخط والمسافة المستخدمة بالفعل.

  2. استنادًا إلى نسب الخط المختار، قم بتجميع الصورة المدخلة في كتل بكسل مستطيلة ذات عرض وارتفاع ثابت (على سبيل المثال.مستطيل عرضه 4 بكسل وارتفاعه 5 بكسل).ستصبح كل كتلة من هذه الكتل حرفًا واحدًا في الإخراج.(باستخدام وحدات البكسل المذكورة للتو، ستصبح الصورة مقاس 240 عرض × 320 ساعة 64 سطرًا مكونة من 60 حرفًا.)

  3. حساب متوسط ​​قيمة التدرج الرمادي لكل كتلة بكسل.

  4. لكل كتلة بكسل، حدد حرفًا تمثل قيمته ذات التدرج الرمادي (من الخطوة 1) تقريبًا جيدًا لمتوسط ​​كتلة البكسل (من الخطوة 3).

هذا هو أبسط شكل من أشكال التمرين.نسخة أكثر تطوراً ستأخذ النسخة الفعلية أيضًا الأشكال من الشخصيات في الاعتبار عند قطع الروابط بين المرشحين لكتلة البكسل.على سبيل المثال، "شرطة مائلة" (/) سيكون خيارًا أفضل من "شرطة مائلة للخلف" (\) لكتلة البكسل التي يبدو أنها تحتوي على ميزة تباين من أسفل اليسار إلى أعلى اليمين.

نصائح أخرى

alib. (الإصدار الأخير في عام 2001) عبارة عن مكتبة فنية ASCII مفتوحة المصدر المستخدمة في التطبيقات مثل MPlayer. قد ترغب في التحقق من شفرة المصدر الخاصة به لمعرفة كيف يفعل ذلك. بخلاف ذلك، هذه الصفحة يصف بمزيد من التفصيل حول كيفية عمل هذه الخوارزميات.

كما يمكنك إلقاء نظرة على libcaca (أحدث إصدار 2014)، ما هو الميدان إلى موقع الويب الخاص بهم لديه التحسينات التالية aalib:

  • دعم يونيكود
  • 2048 الألوان المتاحة (يمكن لبعض الأجهزة فقط 16)
  • تهدئة الصور الملونة
  • عمليات تقطيع النص المتقدمة (الاجزاء، تناوب)

لقد وجدت هذا مقالة Preproject كتبها دانيال فيشر تحتوي على بسيط C # التنفيذ من صورة إلى خوارزمية تحويل ASCII Art

هذه هي الخطوات التي يؤديها البرنامج / المكتبة:

  1. قم بتحميل دفق الصورة كائن نقطي
  2. تدرج الصورة النقطية باستخدام كائن الرسومات
  3. حلقة من خلال بكسل الصورة (لأننا لا نريد حرف ASCII واحد لكل بكسل، نأخذ واحدة لكل 10 × 5)
  4. للسماح لكل بكسل بتأثير سحر ASCII الناتج الناتج، نقوم بحلمنا وحساب سطوع كمية كتلة 10 × 5 الحالية.
  5. أخيرا، قم بإلحاق أحرف ASCII المختلفة بناء على الكتلة الحالية على المبلغ المحسوب.

سهل للغاية، أليس كذلك؟

راجع للشغل: في التعليقات على المقال وجدت هذا تنفيذ أجاكس بارد: Gaia Ajax ASCII مولد الفن:

...] شعرت بأنه مضطر لإظهار أنه يمكن بسهولة القيام به في مجموعة موحدة من تقنيات الويب. حددت لمعرفة ما إذا كان بإمكاني العثور على بعض المكتبات لاستخدامها، ووجدت مقالة Codproject Sau Fan Lee حول مكتبة .NET ASCII .NET.

ملاحظة: لوكاس (انظر التعليقات) وجدت آخر CodeProject المادة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top