ইমেজ প্রসেসিং হল এমন একটি প্রক্রিয়া যা ডিজিটাল ইমেজের উপর বিভিন্ন গাণিতিক অপারেশন প্রয়োগ করে ইমেজের গুণমান বা বৈশিষ্ট্য উন্নত করার জন্য ব্যবহৃত হয়। ইমেজ একটি ম্যাট্রিক্সের মতো সাজানো থাকে, যেখানে প্রতিটি পিক্সেল একটি নির্দিষ্ট মান ধারণ করে (যেমন রেড, গ্রীন, ব্লু বা গ্রেস্কেল মান)। এই কারণে, ম্যাট্রিক্স ইমেজ প্রসেসিংয়ের মূল ভিত্তি হিসেবে কাজ করে, এবং এর উপর বিভিন্ন অপারেশন যেমন ফিল্টারিং, রোটেশন, স্কেলিং, ট্রান্সফরমেশন, এডজাস্টমেন্ট ইত্যাদি কার্যকরভাবে করা যায়।
১. ইমেজের প্রতিনিধিত্ব (Image Representation as a Matrix)
ডিজিটাল ইমেজ সাধারণত ম্যাট্রিক্স হিসেবে ধারণ করা হয়। একটি সাদামাটা গ্রেস্কেল ইমেজে, প্রতি পিক্সেলের মান একটি নির্দিষ্ট সংখ্যার (0 থেকে 255) মাধ্যমে প্রতিনিধিত্ব করা হয়, যেখানে:
- 0 হল কালো,
- 255 হল সাদা,
- অন্যান্য মানগুলিতে বিভিন্ন গ্রে শেড পাওয়া যায়।
RGB ইমেজে প্রতিটি পিক্সেল 3টি মান ধারণ করে (রেড, গ্রীন, ব্লু), এবং প্রতিটি রঙের জন্য একটি আলাদা ম্যাট্রিক্স থাকে।
উদাহরণ:
ধরা যাক, একটি 3x3 গ্রেস্কেল ইমেজ:
\[
I = \begin{pmatrix}
255 & 128 & 64 \\
0 & 200 & 255 \\
100 & 50 & 25 \\
\end{pmatrix}
\]
এখানে, প্রতিটি সংখ্যা একটি পিক্সেলের গ্রে শেড মানকে প্রতিনিধিত্ব করে।
২. ফিল্টারিং (Filtering) - কনভল্যুশন (Convolution)
ইমেজ প্রসেসিংয়ের একটি গুরুত্বপূর্ণ অপারেশন হল ফিল্টারিং। এই অপারেশনে একটি কনভোলিউশন ম্যাট্রিক্স (বা কোর্নেল) একটি ইমেজ ম্যাট্রিক্সের সাথে গুণফলে প্রয়োগ করা হয়। এটি ইমেজের ফিচার পরিবর্তন করে, যেমন শার্পনিং, ব্লারিং, এজ ডিটেকশন ইত্যাদি।
উদাহরণ: ব্লারিং ফিল্টার (Blurring Filter)
ধরা যাক একটি 3x3 গাঢ় ব্লারিং ফিল্টার:
\[
F = \begin{pmatrix}
1 & 1 & 1 \\
1 & 1 & 1 \\
1 & 1 & 1 \\
\end{pmatrix}
\]
এবং ইমেজ \( I \):
\[
I = \begin{pmatrix}
255 & 128 & 64 \\
0 & 200 & 255 \\
100 & 50 & 25 \\
\end{pmatrix}
\]
কনভলিউশনের মাধ্যমে এই ফিল্টারটি প্রয়োগ করলে পিক্সেলগুলি গড় হয়ে যায় এবং ইমেজের স্মুথিং (smoothing) বা ব্লারিং ঘটে। MATLAB এ এটি করতে conv2() বা imfilter() ফাংশন ব্যবহার করা হয়।
I = [255 128 64; 0 200 255; 100 50 25]; % ইমেজ
F = ones(3,3)/9; % ব্লারিং ফিল্টার
I_blurred = conv2(I, F, 'same'); % কনভলিউশন
disp(I_blurred);৩. ইমেজ রোটেশন (Image Rotation)
ম্যাট্রিক্স ব্যবহার করে একটি ইমেজকে ঘুরানোর জন্য রোটেশন ম্যাট্রিক্স তৈরি করা হয়। একটি সাধারণ 2D রোটেশন ম্যাট্রিক্স \( R(\theta) \) হল:
\[
R(\theta) = \begin{pmatrix}
\cos\theta & -\sin\theta \\
\sin\theta & \cos\theta \\
\end{pmatrix}
\]
এটি ইমেজের পিক্সেলগুলিকে একটি নির্দিষ্ট কোণ (\(\theta\)) ঘুরানোর জন্য ব্যবহৃত হয়। MATLAB-এ imrotate() ফাংশন ব্যবহার করে ইমেজ রোটেট করা হয়।
উদাহরণ:
I = imread('image.jpg'); % ইমেজ লোড
I_rotated = imrotate(I, 45); % 45 ডিগ্রি ঘুরানো
imshow(I_rotated); % ঘুরানো ইমেজ প্রদর্শন৪. ইমেজ স্কেলিং (Image Scaling)
ম্যাট্রিক্স অপারেশন ব্যবহার করে একটি ইমেজের আকার পরিবর্তন করতে স্কেলিং করা হয়। স্কেলিং ম্যাট্রিক্স \( S \) ব্যবহার করে একটি ইমেজের আকার বড় বা ছোট করা যায়।
এটি সাধারণত একটি ব্ল্যাক বক্স অপারেশন যা ইমেজের পিক্সেলগুলিকে স্কেলিং ফ্যাক্টরের সাথে গুণফলে পরিবর্তন করে।
উদাহরণ:
I = imread('image.jpg'); % ইমেজ লোড
I_resized = imresize(I, 0.5); % ইমেজের আকার অর্ধেক করা
imshow(I_resized); % আকার পরিবর্তন করা ইমেজ প্রদর্শন৫. এজ ডিটেকশন (Edge Detection)
এজ ডিটেকশন হল একটি ইমেজ প্রসেসিং টেকনিক যা একটি ইমেজে উঁচু কনট্রাস্ট বা পিক্সেল পরিবর্তনের জায়গাগুলি চিহ্নিত করে। এটি সোবেল ফিল্টার বা কান্নি এজ ডিটেকশন অ্যালগরিদম ব্যবহার করে করা হয়।
একটি সাধারণ সোবেল ফিল্টার:
\[
S_x = \begin{pmatrix}
-1 & 0 & 1 \\
-2 & 0 & 2 \\
-1 & 0 & 1 \\
\end{pmatrix}, \quad
S_y = \begin{pmatrix}
-1 & -2 & -1 \\
0 & 0 & 0 \\
1 & 2 & 1 \\
\end{pmatrix}
\]
এটি পিক্সেল পরিবর্তনের জন্য এক্স এবং ওয়াই ডিরেকশনে কনভলিউশনের মাধ্যমে এজ ডিটেকশন করে। MATLAB-এ edge() ফাংশন ব্যবহার করে এজ ডিটেকশন করা যায়।
উদাহরণ:
I = imread('image.jpg'); % ইমেজ লোড
I_edges = edge(I, 'Sobel'); % সোবেল ফিল্টার দিয়ে এজ ডিটেকশন
imshow(I_edges); % এজ ডিটেকশন করা ইমেজ প্রদর্শন৬. ফোরিয়ার ট্রান্সফরমেশন (Fourier Transform)
ফোরিয়ার ট্রান্সফরমেশন ইমেজের ফ্রিকোয়েন্সি ডোমেনে রূপান্তরিত করে। এটি সাধারণত ইমেজ বিশ্লেষণ, ফিল্টারিং এবং সিগন্যাল প্রোসেসিংয়ের জন্য ব্যবহৃত হয়।
এটি ম্যাট্রিক্সের ফোরিয়ার ট্রান্সফর্ম এবং ইনভার্স ফোরিয়ার ট্রান্সফর্ম ব্যবহার করে ইমেজের বৈশিষ্ট্য বিশ্লেষণ করে।
উদাহরণ:
I = imread('image.jpg'); % ইমেজ লোড
I_FFT = fft2(I); % ফোরিয়ার ট্রান্সফর্ম
I_FFT_shifted = fftshift(I_FFT); % ফোরিয়ার ট্রান্সফর্ম সেন্টার করা
imshow(log(abs(I_FFT_shifted)), []); % ফোরিয়ার ট্রান্সফর্ম প্রদর্শন৭. ইমেজ সেগমেন্টেশন (Image Segmentation)
ইমেজ সেগমেন্টেশন হল একটি প্রক্রিয়া, যা একটি ইমেজকে বিভিন্ন অংশে বিভক্ত করে, প্রতিটি অংশকে আলাদা বৈশিষ্ট্য অনুসারে গ্রুপ করে। এটি সাধারণত থ্রেশহোল্ডিং, ক্লাস্টারিং, এবং ডোমেন-স্পেস ফিল্টারিং ব্যবহার করে করা হয়।
উদাহরণ:
I = imread('image.jpg'); % ইমেজ লোড
I_gray = rgb2gray(I); % গ্রেস্কেলে রূপান্তর
I_threshold = imbinarize(I_gray); % থ্রেশহোল্ডিং ব্যবহার করে সেগমেন্টেশন
imshow(I_threshold); % সেগমেন্টেশন ফলাফল প্রদর্শনসারাংশ
ম্যাট্রিক্সের প্রয়োগ ইমেজ প্রসেসিংয়ে অত্যন্ত গুরুত্বপূর্ণ। বিভিন্ন গাণিতিক অপারেশন যেমন কনভলিউশন, রোটেশন, স্কেলিং, এজ ডিটেকশন, ফিল্টারিং, ফোরিয়ার ট্রান্সফর্ম ইত্যাদি ম্যাট্রিক্সের মাধ্যমে সহজে করা যায়। MATLAB-এ এই অপারেশনগুলি দ্রুত এবং কার্যকরভাবে সম্পাদন করা যায়, যা ইমেজ প্রসেসিংয়ে কার্যকর ফলাফল দেয়।
Read more