تابع Fspecial در متلب
تابع fspecial یکی از توابع تولید کرنل در متلب می باشد که به صورت پیش فرض تعدادی از روش های مشخص را شامل می شود. در این بخش بجز روش های سوبل و پرویت تشریح می شود.
برای درک بهتر عملکرد تابع، تصاویر نتایج مثال زیر را تفسیر می کنیم.
hsize = 3;
radius = 3;
sigma =1;
I = imread('cameraman.tif');
for i = 1:6
if i ==1
kernel = fspecial('average',hsize);
elseif i ==2
kernel = fspecial('disk',radius);
elseif i == 3
kernel = fspecial('gaussian',hsize,sigma);
elseif i == 4
alpha = 0.1;
kernel = fspecial('laplacian',alpha);
elseif i == 5
kernel = fspecial('log',hsize,sigma);
elseif i == 6
len = 5;
theta = 10;
kernel = fspecial('motion',len,theta);
end
img = imfilter(I,kernel);
subplot (2,3,i) ,imshow(img)
end
![](http://lobematlab.ir/wp-content/uploads/2021/05/fspecial-1.jpg)
این کد نوشته شده تمام حالت های تابع را بر روی تصویر کمرامن اعمال می کند (بجز سوبل و پرویت). حلقه if کرنل را انتخاب می کند و حلقه for ان را بر روی تصویر با تابع imfilter اعمال می کند. نتیجه به صورت زیر خواهد بود.
همانطور که می بینید 3 فیلتر متوسط گیری، و دایره ای و گوسی نقش مات کننده تصویر را دارند. بنابراین جزییات تصویر از بین می رود. (در حوزه فرکانس این فیلتر ها نقش فیلتر های پایین گذر را ایفا می کند.)
تصویر 4 ام با عنوان لاپلاسین در واقع فیلتری مبتنی بر مشتق مرتبه دوم تصویر می باشد. این فیلتر در حوزه فرکانس همانند فیلتر بالا گذر عمل میکند. در این فیلتر لبه ها که نشان دهنده تغییرات شدت روشنایی در تصویر می باشد آشکار سازی می شود.
تصویر 5 ام، log نیز جز فیلتر های بالاگذر محسوب می شود و نقش آشکار سازی لبه را دارد.
در نهایت فیلتر motion شبیه سازی تکان های دوربین فیلم برداری را ممکن می کند که تغییرات چرخشی theta و لغزشی len را به عنوان ورودی گرفته و بر تصویر اعمال می کند.