JPEG কমপ্রেশন কীভাবে কাজ করে
দক্ষ ইমেজ কমপ্রেশনের পেছনের ধাপগুলো সহজভাবে ব্যাখ্যা
24. January 2025 দ্বারা Bianca Palmer
আপনি কি কখনও ভেবেছেন কীভাবে আপনার ফোন বা ক্যামেরা মুহূর্তের মধ্যে একটি ছবি তোলে এবং কিছুক্ষণের মধ্যেই সেটি সংরক্ষিত হয় JPEG আকারে-ছোট, দ্রুত, আর তবুও স্পষ্ট? আসলে পর্দার আড়ালে চলছে একটি চতুর প্রক্রিয়া, যা বিশাল সাইজের ইমেজ ফাইলকে তাদের আসল সাইজের একাংশে ছোট করে ফেলে, তাও আবার ভালো মান বজায় রেখে। কিন্তু এটা আসলে কীভাবে কাজ করে? আজ আমরা JPEG কমপ্রেশনএর খুঁটিনাটি নিয়ে আলোচনা করব, প্রতিটি ধাপ সহজ ভাষায় ব্যাখ্যা করব, যাতে আপনি এই ইমেজ কমপ্রেশনের প্রক্রিয়াটি পুরোপুরি বুঝতে পারেন।
JPEG কী?
JPEG (Joint Photographic Experts Group-এর সংক্ষিপ্ত রূপ) সবচেয়ে প্রচলিত ইমেজ ফরম্যাটগুলোর একটি। এটি ডিজিটাল ছবি সংরক্ষণের জন্য সবচেয়ে বেশি ব্যবহৃত হয়। JPEG-এর আসল শক্তি হলো ইমেজ ফাইল কমপ্রেস করার ক্ষমতা, যার মাধ্যমে মানে খুব বেশি প্রভাব না ফেলেই সাইজ অনেক কমানো যায়।
উদাহরণ হিসেবে, উচ্চ মানের আনকমপ্রেসড একটি ইমেজ হতে পারে 46MB আকারের। JPEG-এ কমপ্রেস করার পর একই ইমেজটির সাইজ কমে হয়ে যেতে পারে মাত্র 4.1MB! কিন্তু সাইজ কমিয়েও কীভাবে ছবিটা এত পরিষ্কার থাকে?
এর উত্তর লুকিয়ে আছে compression process, কমপ্রেশন প্রক্রিয়ায়, যা আমাদের চোখ যেভাবে কাজ করে তার সুবিধা নেয় এবং অপ্রয়োজনীয় ডেটা সরিয়ে দেয়।
JPEG কী করে?
সহজভাবে বলতে গেলে, JPEG ছবি বিশ্লেষণ করে এবং এমন অংশ সরিয়ে ফেলে যা আমাদের চোখ সহজে টের পায় না। যখন আপনি JPEG দিয়ে কোনো ইমেজ কমপ্রেস করেন, আপনি ঠিক করতে পারেন কতটা কমপ্রেশন প্রয়োগ হবে। "quality" সেটিং কমবেশি করে আপনি ঠিক করতে পারেন কতটুকু জায়গা বাঁচাতে চান। কোয়ালিটি 100% থেকে 0%-এ নামলে ফাইল সাইজও কমে যায়।
আপনি যত বেশি কমপ্রেস করবেন, ছবির রেজোলিউশন একই থাকবে, কিন্তু কিছু ত্রুটি বা "artifacts" দেখা যেতে পারে, যেগুলো ছোট ছোট বর্গাকার ব্লকের মতো দেখায়, তবে সাধারণত জুম না করলে বোঝা কঠিন। JPEG-এর লক্ষ্য হলো মানুষের চোখে খারাপ না দেখিয়ে ফাইলটিকে যতটা সম্ভব ছোট করা।
JPEG কমপ্রেশনের ধাপগুলো
JPEG কমপ্রেশন শুধু একটিমাত্র জাদুকরী কৌশল নয়, বরং এটি এমন কয়েকটি স্মার্ট ধাপের সমষ্টি যা ইমেজের সাইজ কমানোর জন্য ডিজাইন করা হয়েছে। চলুন JPEG-কে এত কার্যকর করে তোলার পাঁচটি মূল ধাপ দেখে নেই।
ধাপ 1: কালার স্পেস কনভার্সন
ইমেজ অনেকগুলো পিক্সেল দিয়ে গঠিত, আর প্রতিটি পিক্সেলে লাল, সবুজ এবং নীল (RGB) কম্পোনেন্ট থাকে, যা একসাথে রঙ তৈরি করে। JPEG প্রথমে এই RGB মানগুলো একটি ভিন্ন কালার স্পেসে রূপান্তর করে:
- Luminance (উজ্জ্বলতা): এটি কোনো পিক্সেলের উজ্জ্বলতা বা আলোর মাত্রা বোঝায় এবং পুরো ছবির কনট্রাস্ট নির্ধারণে গুরুত্বপূর্ণ ভূমিকা রাখে।
- Chrominance (রঙ): এটি রঙ সংক্রান্ত তথ্য, যেমন hue এবং saturation বোঝায়।
এই রূপান্তর কাজে লাগায় যে মানুষের চোখ উজ্জ্বলতা (luminance)-এর প্রতি রঙের তুলনায় বেশি সংবেদনশীল (chrominance)। উজ্জ্বলতা ও রঙকে আলাদা করার মাধ্যমে JPEG পরের ধাপগুলোতে নির্দিষ্টভাবে ডেটা কমাতে পারে, আর তবুও গুরুত্বপূর্ণ ভিজ্যুয়াল ডিটেইল অক্ষুণ্ণ রাখে।
এ ধাপে কোনো ডেটা হারায় না, তবে এটি কার্যকর কমপ্রেশনের ভিত্তি তৈরি করে।
ধাপ 2: ক্রোমিন্যান্স ডাউনস্যাম্পলিং/ক্রোমা সাবস্যাম্পলিং
ক্রোমা সাবস্যাম্পলিং হল একটি হল কালার স্পেস কনভার্সনের পর প্রয়োগ করা একটি কৌশল। মনে আছে, আমরা বলেছিলাম আমাদের চোখ উজ্জ্বলতার (luminance) তুলনায় রঙ (chrominance) খুব ভালোভাবে দেখতে পারে না?
JPEG এই বিষয়টাকে কাজে লাগিয়ে রঙ সংক্রান্ত ডেটার পরিমাণ কমায়। এটি নীল ও লাল ক্রোমিন্যান্স ইমেজগুলোকে প্রতি চারটি পিক্সেলের ব্লকে গড় করে ছোট করে ফেলে। এতে রঙ সংক্রান্ত ডেটা অনেক কমে যায়, কিন্তু luminance (উজ্জ্বলতা) অপরিবর্তিত থাকে। এই পর্যায়ে এসে ইমেজটি ইতিমধ্যে অর্ধেকের বেশি কমপ্রেস হয়ে যায়!
ধাপ 3: Discrete Cosine Transform (DCT)
Discrete Cosine Transform (DCT) একটি গাণিতিক কৌশল, যা ইমেজ ডেটাকে spatial domain (যেখানে ইমেজটি পিক্সেলের গ্রিড আকারে থাকে) থেকে frequency domain-এ রূপান্তর করে। এই প্রক্রিয়ায় ইমেজের কোন কোন অংশে সবচেয়ে গুরুত্বপূর্ণ ভিজ্যুয়াল তথ্য আছে এবং কোন অংশ বাদ দেওয়া যেতে পারে তা বোঝা সহজ হয়। বাতিল করা হয়েছে।
DCT ছবিটিকে 8x8 ব্লকে ভাগ করে এবং প্রতিটি ব্লককে ফ্রিকোয়েন্সি মানের একটি সংগ্রহে রূপান্তর করে। উচ্চ ফ্রিকোয়েন্সি, যা পিক্সেলের মানের দ্রুত পরিবর্তন যেমন কিনারা বা নয়েজ বোঝায়, সেগুলো সাধারণত মানুষের চোখে কম ধরা পড়ে, ফলে এগুলো সরলীকরণ বা অপসারণ করা যেতে পারে।
ধাপ ৪: কোয়ান্টাইজেশন
DCT প্রয়োগের পর, উৎপন্ন ফ্রিকোয়েন্সি ডেটা কোয়ান্টাইজেশনপ্রক্রিয়ার মধ্য দিয়ে যায়। এই ধাপে, ফ্রিকোয়েন্সি মানের পরিসরকে একটি ধ্রুবক সেট, যাকে কোয়ান্টাইজেশন টেবিল বলা হয়, দিয়ে ভাগ করে কমানো হয়। এই প্রক্রিয়ায় মূলত ফ্রিকোয়েন্সি মানগুলোকে রাউন্ড করে সরল করা হয়।
উচ্চ ফ্রিকোয়েন্সি মানগুলোকে বেশি মাত্রায় কোয়ান্টাইজ করা হয়, অর্থাৎ এগুলো কম গুরুত্বপূর্ণ হওয়ার কারণে আরও বেশি নির্ভুলতা হারায়, যা পুরো ছবির মানের ওপর কম প্রভাব ফেলে। এই চতুর্থ ধাপটি ছবিটি উপস্থাপন করতে প্রয়োজনীয় ডেটার পরিমাণ কমায়, ফলে ফাইল ছোট হয়। তবে, অতিরিক্ত কোয়ান্টাইজেশন দৃশ্যমান আর্টিফ্যাক্টের সৃষ্টি করতে পারে, যেমন ব্লকি বা ঝাপসা দেখানো, বিশেষ করে উচ্চ কম্প্রেশন স্তরে।
ধাপ ৫: রান লেংথ এবং হাফম্যান এনকোডিং
কোয়ান্টাইজেশনের পরও ডেটা কার্যকরভাবে সংরক্ষণের জন্য যথেষ্ট ছোট হয় না। এখানেই রান লেংথ এনকোডিং (RLE) এবং হাফম্যান এনকোডিং ব্যবহৃত হয়।
প্রথমে, RLE ব্যবহার করে দীর্ঘ পুনরাবৃত্ত ডেটার ধারা (যেমন শূন্য) সরল করা হয়, যেখানে প্রতিটি মান আলাদাভাবে সংরক্ষণ না করে কতবার পুনরাবৃত্ত হয়েছে তা সংরক্ষণ করা হয়। এরপর হাফম্যান এনকোডিং প্রয়োগ করা হয়, যেখানে ঘন ঘন ব্যবহৃত মানগুলোকে ছোট বিট কোড দিয়ে প্রতিস্থাপন করা হয়, ফলে ফাইল আরও ছোট হয়।
These two এনকোডিং পদ্ধতি একসঙ্গে কাজ করে ফাইলের আকার উল্লেখযোগ্যভাবে কমায়, অথচ ছবির মান খুব বেশি কমে না!
অতিরিক্ত তথ্য
JPEG খুবই কার্যকর একটি ফরম্যাট হলেও, কিছু গুরুত্বপূর্ণ বিষয় বিবেচনা করা দরকার:
- কম্প্রেশন লেভেল: JPEG ব্যবহারকারীদের কম্প্রেশনের মাত্রা বেছে নেওয়ার সুযোগ দেয়, তবে উচ্চতর কম্প্রেশন ফাইলের আকার কমায় এবং ব্লারি কিনারা বা পিক্সেলেট হওয়ার মতো দৃশ্যমান আর্টিফ্যাক্ট তৈরি করতে পারে। এর কারণ হল কোয়ান্টাইজেশন টেবিলের মান খুব বেশি হওয়া, যা বেশি সংখ্যক শূন্য যোগ করে, ফাইলের আকার কমায় কিন্তু ছবির মানের ব্যয়ে।
- উচ্চ ফ্রিকোয়েন্সি ডেটা লস: কোয়ান্টাইজেশন উচ্চ ফ্রিকোয়েন্সি ডেটার (যেমন ধারালো কিনারা) নির্ভুলতা কমায়, এ কারণেই মসৃণ টেক্সচারের জন্য JPEG উপযোগী হলেও ধারালো লাইন ও ভেক্টর গ্রাফিকের ক্ষেত্রে সমস্যায় পড়তে পারে।
- ভেক্টর গ্রাফিকের জন্য আদর্শ নয়: ভেক্টর গ্রাফিক কম্প্রেস করার ক্ষেত্রে JPEG ভালো পছন্দ নয়, কারণ এটি আকার বা লাইনের সীমানায় দৃশ্যমান আর্টিফ্যাক্ট তৈরি করতে পারে।
এই সীমাবদ্ধতাগুলো থাকা সত্ত্বেও, JPEG এখনো সবচেয়ে বেশি ব্যবহৃত ইমেজ ফরম্যাট, আংশিক কারণ এটি পুরোনো, ভালোভাবে বোঝা এবং রয়্যালটি-মুক্ত। তবে, WebP অথবা HEIF এর মতো নতুন ফরম্যাটগুলো মান বজায় রেখে আরও ভালো কম্প্রেশন রেট প্রদান করে, যা নির্দিষ্ট ক্ষেত্রে আকর্ষণীয় বিকল্প হয়ে উঠেছে।
সারসংক্ষেপ
JPEG কম্প্রেশন অ্যালগরিদম ইমেজ ডেটা ব্যবস্থাপনায় একটি উল্লেখযোগ্য সাফল্য। ছবিকে ছোট ব্লকে ভাগ করে, বিভিন্ন গাণিতিক রূপান্তর প্রয়োগ করে এবং রান লেংথ ও হাফম্যান এনকোডিংয়ের মতো কার্যকর এনকোডিং কৌশল ব্যবহার করে এটি আমাদেরকে অনেক ছোট ফাইল সাইজে উচ্চ মানের ছবি সংরক্ষণ করতে সাহায্য করে।
উচ্চ মাত্রার কম্প্রেশন বা ভেক্টর গ্রাফিকের ক্ষেত্রে কিছু সীমাবদ্ধতা থাকলেও, বিস্তৃত ব্যবহার এবং ফটোগ্রাফিক ছবির জন্য ভালো ফল দেওয়ার সক্ষমতার কারণে JPEG এখনো একটি টিকে থাকা মানদণ্ড।