کانولوشن و کرولیشن دو بعدی
کانولوشن و کرولیشن دو بعدی
مقدمهای بر پردازش تصویر
پردازش تصویر یکی از حوزههای کلیدی در علوم کامپیوتر، مهندسی برق، و هوش مصنوعی است که به تحلیل، اصلاح، و استخراج اطلاعات از تصاویر دیجیتال میپردازد. در این حوزه، عملیات ریاضی مانند کانولوشن و کرولیشن دوبعدی برای اعمال فیلترها، تشخیص الگوها، و بهبود کیفیت تصاویر استفاده میشوند. به دلیل ماهیت دوبعدی تصاویر، این عملیات باید در قالب ماتریسهای دوبعدی بررسی شوند. در این مقاله، مفاهیم کانولوشن و کرولیشن دوبعدی را توضیح داده و با مثالهای عملی در متلب، کاربردهای آنها را نشان میدهیم.
کرولیشن دو بعدی
کرولیشن دوبعدی عملیاتی است که برای اندازهگیری میزان شباهت بین یک الگو (یا ماسک) و بخشهای مختلف یک تصویر استفاده میشود. این عملیات در پردازش تصویر برای کاربردهایی مانند تشخیص الگو، یافتن اشیاء در تصویر، و فیلتر کردن به کار میرود.در کرولیشن دوبعدی، یک ماسک (یا کرنل) کوچک روی تصویر حرکت میکند و در هر موقعیت، ضرب نقطهای (Dot Product) بین عناصر ماسک و پیکسلهای تصویر انجام شده و مجموع این مقادیر بهعنوان خروجی در نظر گرفته میشود. فرمول ریاضی کرولیشن دوبعدی به صورت زیر است:
$$R_{xy}(m,n) = \sum_{i=-k}^{k} \sum_{j=-l}^{l} I(m+i, n+j) \cdot K(i,j)$$
که در آن:
- I: ماتریس تصویر ورودی
- K: ماتریس کرنل (فیلتر)
- m,n: مختصات پیکسل در تصویر خروجی
- k,l: ابعاد کرنل
ویژگیهای کرولیشن دوبعدی
حرکت کرنل: کرنل بدون چرخش روی تصویر جابهجا میشود. کاربردها: کرولیشن برای یافتن الگوهای خاص در تصویر (مانند تشخیص یک شکل خاص) و اعمال فیلترهای نرمکننده (مانند فیلتر میانگین) بسیار مناسب است. حساسیت به جهت: اگر کرنل نامتقارن باشد، نتیجه کرولیشن به جهتگیری الگو حساس است.
تفاوت جزیی در کرولیشن و کانولوشن وجود دارد اما اصول آن دو بر مبنای ضرب نقطه ای ماسک انتخابی (فیلتر) بر المان های تصویر و سپس جمع آن ها می باشد.
تابع کرولیشن دقیقا مشابه شکل زیر عمل می کند یعنی ماسک مربوطه پس از اعمال به قسمتی از تصویر و مجموع عناصری که از ضرب ارایه به ارایه آن بر تصویر بدست آمده است، یک واحد شیف افقی ( عمودی) پیدا می کند تا تمامی سطر ها و ستون های ماتریس تصویر را پوشش دهد و مقادیر جایگزین برای تک تک ارایه های ماتریس تولید شود.

کانولوشن دو بعدی
کانولوشن دوبعدی عملیاتی مشابه کرولیشن است، با این تفاوت که کرنل قبل از اعمال، 180 درجه چرخانده میشود. این عملیات معادل ضرب در حوزه فرکانس است و برای مدلسازی پاسخ یک سیستم (مانند فیلتر) به تصویر ورودی استفاده میشود.
فرمول ریاضی کانولوشن دوبعدی به صورت زیر است:
$$R_{xy}(m,n) = \sum_{i=-k}^{k} \sum_{j=-l}^{l} I(m+i, n+j) \cdot K(i,j)$$
تفاوت اصلی با کرولیشن در معکوس شدن مختصات کرنل (i,j) است که معادل چرخش 180 درجهای کرنل میباشد.
- چرخش کرنل: کرنل قبل از ضرب نقطهای معکوس میشود.
- ارتباط با حوزه فرکانس: کانولوشن در حوزه زمان معادل ضرب تصویر و کرنل در حوزه فرکانس است (بر اساس قضیه تبدیل فوریه).
- کاربردها: در فیلترهای تصویری مانند تار کردن (Blurring)، تشخیص لبه، و شارپ کردن تصویر استفاده میشود.
نکته مهم: تقارن کرنل
اگر کرنل متقارن باشد (مانند فیلتر میانگین 3×3)، چرخش 180 درجه تأثیری ندارد و نتایج کانولوشن و کرولیشن یکسان خواهد بود. این ویژگی در عمل باعث میشود که در بسیاری از کاربردها (مانند فیلترهای نرمکننده) تفاوت بین این دو عملیات قابلچشمپوشی باشد.
مسئله پدینگ (Padding) در پردازش تصویر
هنگام اعمال کانولوشن یا کرولیشن، کرنل ممکن است از لبههای تصویر خارج شود. برای مدیریت این مشکل، معمولاً از پدینگ استفاده میشود. پدینگ به معنای افزودن حاشیههایی (معمولاً با مقادیر صفر یا مقادیر تکراری از تصویر) به اطراف تصویر است. انواع رایج پدینگ عبارتاند از:
- Zero Padding: افزودن صفر به حاشیهها.
- Replicate Padding: تکرار مقادیر لبههای تصویر.
- Mirror Padding: بازتاب مقادیر لبههای تصویر.
پدینگ باعث میشود که ابعاد تصویر خروجی کنترل شود و از حذف اطلاعات در لبهها جلوگیری شود.
پیاده سازی در متلب
در متلب روش های مختلفی برای انجا کانولوشن و کرولیشن دو بعدی وجود دارد. که تابع imfilter از رایج ترین این توابع می باشد و corr یا conv به عنوان ورودی تابع گرفته و تعیین کننده نحوه عمل فیلترینگ به صورت کانولوشن و کرولیشن می باشد.
clc
clear all
close all
%% convolution-vs-correlation
I = imread('cameraman.tif');
kernel = 1/9.*ones(3); %mask
con = imfilter(I,kernel,'conv'); %convolution
cor = imfilter(I,kernel,'corr'); %correlation
subplot 121; imshow (cor)
title('correlation')
subplot 122; imshow (con)
title('convolution')
در این مثال، از یک کرنل3×3 متقارن (فیلتر میانگین) استفاده شده است. به دلیل تقارن کرنل، نتایج کرولیشن و کانولوشن یکسان هستند. این فیلتر باعث نرم شدن (Blurring) تصویر میشود، زیرا میانگین پیکسلهای همسایه را محاسبه میکند.

کاربردهای عملی
- فیلتر کردن تصویر:
- نرم کردن (Blurring): با استفاده از فیلتر میانگین یا گاوسی.
- تشخیص لبه: با استفاده از فیلترهایی مانند Sobel یا Prewitt.
- شارپ کردن تصویر: با استفاده از فیلترهای تقویتکننده لبه.
- تشخیص الگو: کرولیشن دوبعدی برای یافتن اشیاء خاص در تصویر (مانند تشخیص چهره یا لوگو).
- شبکههای کانولوشنی (CNN): در یادگیری عمیق، کانولوشن دوبعدی برای استخراج ویژگیهای تصویر استفاده میشود.
- پردازش سیگنالهای پزشکی: مانند تحلیل تصاویر MRI یا CT.
نتیجهگیری
کانولوشن و کرولیشن دوبعدی ابزارهای بنیادین در پردازش تصویر هستند که هر یک کاربردهای خاص خود را دارند. کانولوشن برای اعمال فیلترها و مدلسازی پاسخ سیستمها، و کرولیشن برای سنجش شباهت و تشخیص الگو به کار میروند. در متلب، توابعی مانند imfilter امکان پیادهسازی این عملیات را به سادگی فراهم میکنند. درک تفاوتهای این دو عملیات و استفاده از کرنلهای مناسب، کلید موفقیت در پروژههای پردازش تصویر است. در آموزشهای بعدی، به بررسی فیلترهای پیشرفتهتر پردازش تصویر خواهیم پرداخت.
