
დითერინგი QR კოდებში: როგორ იმალება ფოტო მოქმედი კოდის შიგნით
დეველოპერმა ენდრიუ ტეილორმა ახსნა, როგორ აქცევს დითერინგი და შეცდომის გავრცელების ორგავლიანი ალგორითმი ჩვეულებრივ QR კოდს სკანირებად ერთბიტიან პორტრეტად.
QR კოდს შიგნით ჩამალული ფოტოს მიუხედავად მაინც შეუძლია სკანირება — თუ იცით, როგორ მოიხაროთ წესები. დეველოპერმა ენდრიუ ტეილორმა, „დითერირებული QR კოდების გენერატორის“ ავტორმა, გამოაქვეყნა გზამკვლევი, თუ როგორ მუშაობს მისი ხელსაწყო, რომელიც ჩვეულებრივ კოდებს ერთბიტიან პორტრეტებად აქცევს; წყაროს კოდი Codeberg-ზეა გამოქვეყნებული.
QR კოდის ანატომია
QR კოდი კვადრატების ბადეა, რომელიც ორ ნაწილად იყოფა: ფუნქციური შაბლონები — მუქი ფორმები, რომლებიც სკანერს კოდის მოძებნასა და ორიენტაციის დადგენაში ეხმარება — და მონაცემთა მოდულები, სადაც თავად მონაცემები ინახება. ვინაიდან მოდულები მხოლოდ მას შემდეგ იკითხება, რაც სკანერი ფუნქციურ შაბლონებს დაიჭერს, მათი შეცვლა შეიძლება — ამიტომ ბრენდები გამორჩეულ QR კოდებს ბეჭდავენ — თუმცა ყოველი ცვლილება სკანირების საიმედოობას ამცირებს.
ფოტო ხმაურის შიგნით
ერთი გზა, რომელიც ტეილორის ციტირებულ დეივ რიჩესონის პოსტშია ნაჩვენები, მოდულების შემცირებაა: თითოეული პიქსელი 3×3 ბადედ იყოფა, დაშიფრული ბიტი შუა უჯრაში ინახება, დანარჩენი რვა კი სურათს ემსახურება. შედეგად მიიღება დაბალი გარჩევადობის ერთბიტიანი ფოტო, დაფარული „მარილისა და წიწაკის“ ხმაურით — ხომ ცხრიდან ერთი პიქსელი მონაცემებს მაინც ატარებს.
დითერინგი და შეცდომის გავრცელება
ნახევარტონები ჩვეულებრივ დითერინგით მიიღწევა — მაგალითად, ბაიერის შაბლონით, რომელიც შუალედურ ტონებს შავ-თეთრი ჭადრაკული ფონით ბაძავს. შეცდომის გავრცელება უფრო შორს მიდის: პიქსელის ზღვრულ მნიშვნელობასთან შედარებისას წარმოქმნილი შეცდომა მეზობელ, ჯერ გადაუწყვეტელ პიქსელებზე ნაწილდება, რის გამოც ყოველი უბანი უფრო ზუსტად ემთხვევა ნამდვილ სიკაშკაშეს, ვიდრე რეგულარული დითერინგის დროს, ხოლო ნაკლებად რეგულარული ტექსტურა თვალისთვის უფრო სასიამოვნოა. ტეილორის მაგალითია მიქელანჯელოს „დავითის“ 147×147 ერთბიტიანი რენდერი ფლოიდ-შტაინბერგის ალგორითმით.
იმისთვის, რომ მონაცემთა მოდულები არ კაშკაშებდეს, გავრცელება ორჯერ ტარდება. პირველი გავლისას მოდულებს სავალდებულო ფერები ენიჭებათ და წარმოქმნილი შეცდომა მეზობელ რვა პიქსელზე ნაწილდება — შეცდომამ შეიძლება 95%-ს მიაღწიოს, როცა მუქი უბნის პიქსელი სუფთა თეთრი უნდა იყოს — მეორე გავლა კი ჩვეულებრივად მიმდინარეობს. სწორედ ეს პირველი შეცდომის გავრცელება ხდის სურათს წაკითხვადს, წერს ტეილორი.
ფასი — სკანირებადობა
არსებობს კომპრომისი იერსახესა და საიმედოობას შორის. კოდი, რომელიც ლეპტოპის ეკრანიდან თქვენს ტელეფონზე იკითხება, შეიძლება ვერ იკითხოს უცხო ადამიანის ტელეფონზე ცუდ განათებაში დაბეჭდილი. გენერატორი ასევე პატარა სურათებს ქმნის ჩამონაჭრის გარეშე, სკანერებს კი „სიჩუმის ზონა“ სჭირდებათ; ბრაუზერები გადიდებულ სურათებს ბუნდოვნად აჩვენებენ, თუ CSS-ის image-rendering არ არის მითითებული. ჩამონაჭრის ფერი უნდა ემთხვეოდეს საძებნი შაბლონების ფონს — ჩვეულებრივ თეთრს, თუმცა ინვერსიულ QR კოდებს შავი სჭირდება.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.