ទម្រង់បង្ហាប់រូបភាព QOI ត្រូវបានណែនាំ

ទម្រង់បង្ហាប់រូបភាពស្រាល និងគ្មានការបាត់បង់ត្រូវបានណែនាំ - QOI (រូបភាពល្អ) ដែលអនុញ្ញាតឱ្យអ្នកបង្រួមរូបភាពបានយ៉ាងលឿននៅក្នុងចន្លោះពណ៌ RGB និង RGBA ។ នៅពេលប្រៀបធៀបការអនុវត្តជាមួយទម្រង់ PNG ការអនុវត្តសេចក្តីយោងតែមួយខ្សែនៃទម្រង់ QOI ជាភាសា C ដែលមិនប្រើការណែនាំអំពី SIMD និងការបង្កើនប្រសិទ្ធភាពការជួបប្រជុំគ្នា គឺលឿនជាង 20-50 ដងក្នុងល្បឿនអ៊ិនកូដជាង libpng និង stb_image libraries និង 3 - លឿនជាងមុន 4 ដងក្នុងល្បឿនឌិកូដ។ នៅក្នុងលក្ខខណ្ឌនៃប្រសិទ្ធភាពនៃការបង្ហាប់ QOI គឺនៅជិត libpng នៅក្នុងការធ្វើតេស្តភាគច្រើន (នៅក្នុងការធ្វើតេស្តខ្លះវានៅខាងមុខបន្តិចហើយនៅក្នុងផ្សេងទៀតវាទាបជាង) ប៉ុន្តែជាទូទៅវាគួរឱ្យកត់សម្គាល់មុន stb_image (ទទួលបានរហូតដល់ 20%) ។

ការអនុវត្តសេចក្តីយោងនៃ QOI នៅក្នុង C គឺមានតែ 300 បន្ទាត់នៃកូដប៉ុណ្ណោះ។ កូដប្រភពត្រូវបានចែកចាយក្រោមអាជ្ញាប័ណ្ណ MIT ។ លើសពីនេះ អ្នកចូលចិត្តបានរៀបចំការអនុវត្តឧបករណ៍បំប្លែង និងឌិកូដជាភាសា Go, Zig និង Rust។ គម្រោង​នេះ​កំពុង​ត្រូវ​បាន​បង្កើត​ឡើង​ដោយ Dominic Szablewski អ្នក​បង្កើត​ហ្គេម​ដែល​មាន​បទពិសោធន៍​ក្នុង​ការ​បង្កើត​បណ្ណាល័យ​សម្រាប់​ឌិកូដ​វីដេអូ MPEG1។ ដោយប្រើទម្រង់ QOI អ្នកនិពន្ធចង់បង្ហាញថាវាអាចធ្វើទៅបានដើម្បីបង្កើតជម្រើសដ៏មានប្រសិទ្ធភាព និងសាមញ្ញមួយចំពោះទម្រង់ការអ៊ិនកូដរូបភាពទំនើបដែលស្មុគស្មាញពេក។

ការអនុវត្ត QOI គឺឯករាជ្យនៃគុណភាពបង្ហាញ និងធម្មជាតិនៃរូបភាពដែលបានអ៊ិនកូដ (O(n))។ ការអ៊ិនកូដ និងការឌិកូដត្រូវបានអនុវត្តក្នុងមួយវគ្គ - ភីកសែលនីមួយៗត្រូវបានដំណើរការតែមួយដងប៉ុណ្ណោះ ហើយអាចត្រូវបានអ៊ិនកូដតាមវិធីមួយក្នុងចំណោម 4 ដោយជ្រើសរើសអាស្រ័យលើតម្លៃនៃភីកសែលមុនៗ។ ប្រសិនបើភីកសែលបន្ទាប់ស្របគ្នានឹងលេខមុន នោះការរាប់ពាក្យដដែលៗនឹងកើនឡើងតែប៉ុណ្ណោះ។ ប្រសិនបើភីកសែលត្រូវគ្នានឹងតម្លៃមួយក្នុងចំណោមតម្លៃនៅក្នុង 64 past pixel buffer នោះតម្លៃត្រូវបានជំនួសដោយ offset 6-bit ទៅ pixel past។ ប្រសិនបើពណ៌នៃភីកសែលមុនមានភាពខុសប្លែកគ្នាបន្តិចបន្តួច ភាពខុសគ្នាត្រូវបានចង្អុលបង្ហាញក្នុងទម្រង់ខ្លីមួយ (ការបំប្លែងកូដខ្លីៗនៃភាពខុសគ្នានៃសមាសធាតុពណ៌ដែលត្រូវគ្នានឹង 2,4, 5 និង XNUMX ប៊ីត)។ ប្រសិនបើការបង្កើនប្រសិទ្ធភាពមិនអាចអនុវត្តបាន តម្លៃ rgba ពេញលេញត្រូវបានផ្តល់ជូន។

ប្រភព: opennet.ru

បន្ថែមមតិយោបល់