جستجو برای:
سبد خرید 0
  • خانه
  • محصولات
  • ویدئوهای آموزشی رایگان
  • مقالات
  • تماس با ما

ورود

گذرواژه خود را فراموش کرده اید؟

ثبت نام

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در سیاست حفظ حریم خصوصی ما شرح داده می شود مورد استفاده قرار می گیرد.

هوش مصنوعی رضوان
  • خانه
  • محصولات
  • ویدئوهای آموزشی رایگان
  • مقالات
  • تماس با ما
ورود / ثبت نام
0

وبلاگ

هوش مصنوعی رضوان > فایل های آموزشی رایگان > فشرده سازی تصویر با روش DCT در متلب

فشرده سازی تصویر با روش DCT در متلب

فایل های آموزشی رایگان

توضیحات ویدئو

در این ویدئو، با روش فشرده سازی تصاویر با استفاده از الگوریتم 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); % مقدار آستانه برای انتخاب ضرایب مهم
significant_coeffs = dct_image .* (abs(dct_image) >= threshold); % استخراج ضرایب مهم
 
% بازیابی تصویر از ضرایب DCT مهم
reconstructed_image = idct2(significant_coeffs);
 
% نمایش تصاویر
figure;
subplot(1, 2, 1);
imshow(gray_image);
title(‘تصویر اصلی’);
subplot(1, 2, 2);
imshow(uint8(reconstructed_image));
title(‘تصویر فشرده شده و بازیابی شده’);
 
% محاسبه میزان فشرده‌سازی
original_size = numel(gray_image) * 8; % تعداد بیت‌های تصویر اصلی
compressed_size = nnz(significant_coeffs) * 8; % تعداد بیت‌های ضرایب DCT مهم
compression_ratio = original_size / compressed_size; % نسبت فشرده‌سازی
 
fprintf(‘نسبت فشرده‌سازی: %.2f\n’, compression_ratio);
“`
در ویدئو بجای دستور dct2 از دستور dctmtx استفاده شده است. با استفاده از تابع `dctmtx` در متلب، می‌توانید ماتریس تبدیل DCT را به دست آورید و از آن برای انجام تبدیل DCT بر روی تصویر استفاده کنید. تابع `dctmtx` یک ماتریس مربعی را با اندازه ورودی به عنوان ورودی می‌گیرد و ماتریس تبدیل DCT مربوطه را برمی‌گرداند. برای استفاده از این تابع، می‌بایست به شکل زیر عمل کنید. در این نسخه از کد، قبل از انجام تبدیل DCT بر روی تصویر، یک ماتریس تبدیل DCT به اندازه تصویر ایجاد می‌شود با استفاده از تابع `dctmtx`. سپس تبدیل DCT بر روی تصویر با استفاده از این ماتریس انجام می‌شود. مراحل بعدی کد برای استخراج ضرایب DCT مهم، بازیابی تصویر و محاسبه میزان فشرده‌سازی بدون تغییر است.
 
% ایجاد ماتریس تبدیل DCT
N = size(gray_image, 1); % اندازه تصویر
dct_matrix = dctmtx(N); % ایجاد ماتریس تبدیل DCT
 
% انجام تبدیل DCT بر روی تصویر
dct_image = dct_matrix * double(gray_image) * dct_matrix’;
 
% استخراج ضرایب 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); % مقدار آستانه برای انتخاب ضرایب مهم
significant_coeffs = dct_image .* (abs(dct_image) >= threshold); % استخراج ضرایب مهم
 
% بازیابی تصویر از ضرایب DCT مهم
reconstructed_image = dct_matrix’ * significant_coeffs * dct_matrix;
 
% نمایش تصاویر و محاسبه میزان فشرده‌سازی
…
امیدواریم این پروژه برای شما مفید و کاربردی واقع شده باشد. هدف آکادمی هوش مصنوعی رضوان، به اشتراک ‌گذاری تجربیاتی ارزشمند در زمینه پردازش تصویر و هوش مصنوعی با شما مخاطب ارجمند است. لطفا از سایر آموزش‌های رایگان و دوره‌های آموزشی ما دیدن و ما را در شبکه‌های اجتماعی دنبال فرمایید.
قبلی یافتن اشیا مشابه یک الگو با پایتون
بعدی کنترل صدا با حرکت انگشتان دست در پایتون

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • فایل های آموزشی رایگان
  • مقالات
دسته‌های محصولات
  • دوره ها
  • عمومی
نوشته‌های تازه
  • تحولی نوین در صنعت بیمه با هوش مصنوعی
  • سیستم‌های توصیه‌گر: راهنمای جامع
  • ربات هوش مصنوعی چیست؟ اشتراکات و کاربردهای رباتیک و هوش مصنوعی
  • تعریف هوش مصنوعی در زنجیره تأمین
  • هوش مصنوعی احساسی: درک و تحلیل احساسات انسانی
درباره ما

هدف ما آموزش هوش مصنوعی با استفاده از پایتون و متلب می باشد تا بتوانیم موارد کاربردی آن را به شما عزیزان آموزش دهیم.

دسترسی سریع
  • دوره ها
  • تماس با ما
    نماد ها
    کلیه حقوق مادی و معنوی این سایت متعلق به هوش مصنوعی رضوان می‌باشد.
    اشتراک گذاری در شبکه های اجتماعی
    ارسال به ایمیل
    https://airezvan.com/?p=9300
    دسته بندی دوره ها
    دسته بندی بلاگ
    دوره های من
    دسته بندی دوره ها

    دوره ها

    • 3 دوره
    دسته بندی بلاگ

    فایل های آموزشی رایگان

    • 32 نوشته

    مقالات

    • 56 نوشته
    دوره های من
    برای مشاهده خریدهای خود باید وارد حساب کاربری خود شوید
    Facebook Twitter Youtube Instagram Whatsapp
    مرورگر شما از HTML5 پشتیبانی نمی کند.