کانولوشن وهمبستگی دوبعدی
محاسبه همبستگی و کانولوشن در Matlab با تابع imfilter انجام می گیرد.
كد:
g= imfilter(f, w, filtering_mode, boundary_options, size_options)
f تصویر ورودی ، w فیلتر و g تصویر خروجی است.
كد:
f= imread('cameraman.tif');
w=zeros(31);
w(16,16)=1;
g1=imfilter(f,w,'corr','replicate','full');
g2=imfilter(f,w,'corr','symmetric','full');
g3=imfilter(f,w,'corr','circular','full');
figure(1);imshow(g1,[])
figure(2);imshow(g2,[])
figure(3);imshow(g3,[])
اگر تمام عناصر فیلتر یک باشند، فیلتر عمل میانگین گیری انجام می دهد که میتواند برای حذف نویز استفاده گردد. این عمل باعث تار شدن (blurring) تصویر می گردد.
كد:
f= imread('cameraman.tif');
fn=imnoise(f,'gaussian');
w=ones(3)/9;
g=imfilter(fn,w);
subplot(2,2,1);imshow(f);title('Original Image');
subplot(2,2,2);imshow(fn);title('Noisy Image');
subplot(2,2,3);imshow(g);title(‘Smoothing Image');
در محیط Matlab می توان ماسک تعدادی از فیلترهای خطی از پیش تعریف شده را با دستور fspecialبه دست آورد:
کد:
كد:
W=fspecial(‘type’,parameters)
که type نوع فیلتر و parameters مشخصات فیلتر را تعیین میکنند.
انواع فیلترهای قابل تعریف در تابع فوق عبارتند از:
كد:
average' averaging filter
'disk' circular averaging filter
'gaussian' Gaussian lowpass filter
'laplacian' filter approximating the 2-D Laplacian operator
'log' Laplacian of Gaussian filter
'motion' motion filter
'prewitt' Prewitt horizontal edge-emphasizing filter
'sobel' Sobel horizontal edge-emphasizing filter
'unsharp' unsharp contrast enhancement filter