উৎপত্তি ও বিস্তৃত ব্যবহার
Reed–Solomon কোড ১৯৬০ সালে বর্ণনা করেন Irving S. Reed ও Gustave Solomon। এগুলো একক বিটের বদলে পুরো সিম্বল, সাধারণত বাইট নিয়ে কাজ করে, ফলে আঁচড় বা দাগের মতো একটানা ক্ষতি সামলাতে এরা দক্ষ।
একই পরিবারের কোড সিডি, ডিভিডি ও ব্লু-রে ডিস্কের ডেটা, কিছু ডিজিটাল টেলিভিশন ও স্যাটেলাইট সংযোগ এবং Data Matrix ECC 200, Aztec কোড ও PDF417-সহ অন্যান্য 2D বারকোডের ডেটা রক্ষা করে।
QR কোড এটি কীভাবে ব্যবহার করে
QR কোড প্রতিটি ৮ বিটের কোডওয়ার্ডকে GF(256) ফিনিট ফিল্ডের একটি উপাদান হিসেবে ধরে, যা প্রিমিটিভ বহুপদী x^8 + x^4 + x^3 + x^2 + 1 (হেক্স 0x11D) দিয়ে তৈরি। ডেটা কোডওয়ার্ডকে একটি জেনারেটর বহুপদী দিয়ে ভাগ করা হয়, আর ভাগশেষ হয়ে যায় এদের সঙ্গে জোড়া এরর কারেকশন কোডওয়ার্ড।
বড় কোড ডেটাকে কয়েকটি ব্লকে ভাগ করে, প্রতিটির নিজস্ব এরর কারেকশন কোডওয়ার্ড থাকে। কোডওয়ার্ড গ্রিডে বসানোর সময় ব্লকগুলোকে ইন্টারলিভ করা হয়, ফলে একটি অংশের ক্ষতি একটিমাত্র ব্লককে ভারাক্রান্ত না করে অনেক ব্লকে ছড়িয়ে পড়ে।
এটি কতটা ঠিক করতে পারে
একটি ব্লকে n সংখ্যক এরর কারেকশন কোডওয়ার্ড থাকলে ডিকোডার অজানা অবস্থানের সর্বোচ্চ n/2 কোডওয়ার্ড, বা জানা অবস্থানের সর্বোচ্চ n কোডওয়ার্ড শুধরে নিতে পারে, যাকে ইরেজার বলে। মিশ্র ক্ষেত্রে নিয়ম হলো প্রতিটি ভুল দুবার এবং প্রতিটি ইরেজার একবার গোনা হয়।
সে কারণেই পরিষ্কার সমতল কোনো অংশ লোগোয় ঢাকা পড়লেও কোড স্ক্যান হতে পারে: বুদ্ধিমান রিডার ঢাকা অংশটিকে ইরেজার ধরতে পারে, আর এলোমেলো ক্ষতি ঠিক করা কঠিন, কারণ ডিকোডারকে আগে সেটি খুঁজে বের করতে হয়।
- অজানা ভুল: EC কোডওয়ার্ডের সংখ্যার অর্ধেক পর্যন্ত
- ইরেজার (জানা অবস্থান): EC কোডওয়ার্ডের সংখ্যা পর্যন্ত
- ফিল্ড: GF(256), বহুপদী 0x11D
- একটানা ক্ষতি ছড়িয়ে দিতে ব্লকগুলো ইন্টারলিভ করা হয়