در این ویدئو، با روش فشرده سازی تصاویر با استفاده از الگوریتم DCT (تبدیل کسینوسی تک بعدی) در محیط برنامه نویسی متلب آشنا خواهیم شد. الگوریتم DCT یکی از روشهای متداول فشرده سازی تصاویر است که با استفاده از تبدیل فوریه کسینوسی تصویر را به دستههای فرکانسی تجزیه میکند و سپس با حذف برخی از ضرایب فرکانسی کم اهمیت، تصویر را فشرده میکند. به عبارت با کمک این تبدیل، میتوان تصاویر را به فضای فرکانسی منتقل کرد و در آن فضا تنها ضرایبی که بزرگتر و پراهمیتتر در ساخت تصویر هستند را نگه داشت و مابقی را حذف کرد. بدین ترتیب مثلا بجای 1000 ضریب، تنها با نگهداشت 100 ضریب تصویر را فشرده و بازسازی میکنیم. این کار اساس بسیاری از برنامههای فشردهسازی مطرح است.
برای پیادهسازی الگوریتم DCT در متلب، ابتدا تصویر اصلی خوانده میشود و سپس به فضای رنگی سیاه و سفید تبدیل میشود. سپس تبدیل DCT (با کمک تابع dct2) بر روی تصویر انجام شده و ضرایب DCT مهم استخراج میشوند. بر اساس نسبت فشردهسازی مورد نظر، تعداد ضرایب مهم محاسبه و ضرایب DCT مهم با استفاده از مقدار آستانه انتخاب میشوند. سپس تصویر بازیابی شده از ضرایب DCT مهم نمایش داده میشود. در نهایت، میزان فشردهسازی محاسبه شده و نمایش داده میشود.
کدهای پروژه
“`matlab
% خواندن تصویر اصلی
image = imread(‘path_to_your_image’);
% تبدیل تصویر به فضای رنگی سیاه و سفید
gray_image = rgb2gray(image);
% انجام تبدیل DCT بر روی تصویر
dct_image = dct2(double(gray_image));
% استخراج ضرایب DCT مهم
compression_ratio = 0.5; % نسبت فشردهسازی
num_coeffs = round(compression_ratio * numel(dct_image)); % تعداد ضرایب مورد نیاز برای فشردهسازی
sorted_coeffs = sort(abs(dct_image(:)), ‘descend’); % مرتبسازی ضرایب DCT بر اساس مقدار آنها
threshold = sorted_coeffs(num_coeffs); % مقدار آستانه برای انتخاب ضرایب مهم
در ویدئو بجای دستور dct2 از دستور dctmtx استفاده شده است. با استفاده از تابع `dctmtx` در متلب، میتوانید ماتریس تبدیل DCT را به دست آورید و از آن برای انجام تبدیل DCT بر روی تصویر استفاده کنید. تابع `dctmtx` یک ماتریس مربعی را با اندازه ورودی به عنوان ورودی میگیرد و ماتریس تبدیل DCT مربوطه را برمیگرداند. برای استفاده از این تابع، میبایست به شکل زیر عمل کنید. در این نسخه از کد، قبل از انجام تبدیل DCT بر روی تصویر، یک ماتریس تبدیل DCT به اندازه تصویر ایجاد میشود با استفاده از تابع `dctmtx`. سپس تبدیل DCT بر روی تصویر با استفاده از این ماتریس انجام میشود. مراحل بعدی کد برای استخراج ضرایب DCT مهم، بازیابی تصویر و محاسبه میزان فشردهسازی بدون تغییر است.
امیدواریم این پروژه برای شما مفید و کاربردی واقع شده باشد. هدف آکادمی هوش مصنوعی رضوان، به اشتراک گذاری تجربیاتی ارزشمند در زمینه پردازش تصویر و هوش مصنوعی با شما مخاطب ارجمند است. لطفا از سایر آموزشهای رایگان و دورههای آموزشی ما دیدن و ما را در شبکههای اجتماعی دنبال فرمایید.
دیدگاهتان را بنویسید