کانولوشن و کرولیشن دو بعدی

Image processing

در حوزه پردازش تصویر برای اعمال یک ماسک بر روی تصویر نیازمند عملگر های ریاضی همچون کرولیشن و کانولوشن می باشیم. به علت ماهیت دو بعدی تصویر کانولوشن و کرولیشن باید به صورت دو بعدی مورد بررسی قرار بگیرد.

کرولیشن دو بعدی

همانطور که در درس سیگنال ها یاد داریم کانولوشن به معنای ضرب در حوزه فرکانس می باشد. در واقع با کانولوشن در زمان می خواهیم عمل فیلترینگ یا ضرب فیلتر در تصویر در حوزه فرکانس را نشان دهیم.

تفاوت جزیی در کرولیشن و کانولوشن وجود دارد اما اصول آن دو بر مبنای ضرب نقطه ای ماسک انتخابی (فیلتر) بر المان های تصویر و سپس جمع آن ها می باشد.

کانولوشن

همانطور که مشاهده می شود لبه ماسک از تصویر بیرون افتاده است برای اینکه متلب این مساله را درک کند اصولا پدینگی (سطر و ستون صفر) اطراف ماتریس تصویر ایجاد می شود.

تفاوت کانولوشن و کرولیشن را می توان به وضوع در فرمول زیر مشاهده کرد.

تابع کرولیشن دقیقا مشابه شکل بالا عمل می کند یعنی ماسک مربوطه پس از اعمال به قسمتی از تصویر و مجموع عناصری که از ضرب ارایه به ارایه آن بر تصویر بدست آمده است، یک واحد شیف افقی ( عمودی) پیدا می کند تا تمامی سطر ها و ستون های ماتریس تصویر را پوشش دهد و مقادیر جایگزین برای تک تک ارایه های ماتریس تولید شود.

رابطه ریاضی کرولیشن دو بعدی به صورت زیر می باشد:

CORR2D
کرولیشن دو بعدی

کانولوشن دو بعدی

مفهوم کانولوشن در واقع همان بازتاب ضرب فیلتر در حوزه فرکانس را بهمراه دارد. یعنی برای اعمال فیلتر در حوزه زمان اول باید ماسک یا هما فیلتر را 180 درجه بچرخانیم و سپس مشابه شکل بالا در تصویر ضرب نقطه ای کرده و در نهایت جمع کنیم.

conv2D
کانولوشن دو بعدی

در متلب روش های مختلفی برای انجا کانولوشن و کرولیشن دو بعدی وجود دارد. که تابع 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')

در صورتی که ماتریس کرنل متقارن باشد چرخش در آن بی تاثیر بوده و نتایج کانولوشن و کرولیشن یکسان خواهد بود.

corr and conv in matlab

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *