فیلتر گابور (Gabor filter) چیست؟ قسمت 3

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

برنامه های فیلتر دوبعدی گابور در پردازش تصویر

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

مثال پیاده سازی

(کد برای استخراج ویژگی گابور از تصاویر در MATLAB را می توان در http://www.mathworks.com/matlabcentral/fileexchange/44630 پیدا کنید.)

این یک مثال کاربردی در پایتون است :

import numpy as np

def gabor_fn(sigma, theta, Lambda, psi, gamma):
    sigma_x = sigma
    sigma_y = float(sigma) / gamma

    # Bounding box
    nstds = 3 # Number of standard deviation sigma
    xmax = max(abs(nstds * sigma_x * np.cos(theta)), abs(nstds * sigma_y * np.sin(theta)))
    xmax = np.ceil(max(1, xmax))
    ymax = max(abs(nstds * sigma_x * np.sin(theta)), abs(nstds * sigma_y * np.cos(theta)))
    ymax = np.ceil(max(1, ymax))
    xmin = -xmax
    ymin = -ymax
    (y, x) = np.meshgrid(np.arange(ymin, ymax + 1), np.arange(xmin, xmax + 1))

    # Rotation 
    x_theta = x * np.cos(theta) + y * np.sin(theta)
    y_theta = -x * np.sin(theta) + y * np.cos(theta)

    gb = np.exp(-.5 * (x_theta ** 2 / sigma_x ** 2 + y_theta ** 2 / sigma_y ** 2)) * np.cos(2 * np.pi / Lambda * x_theta + psi)
    return gb

برای پیاده سازی در تصاویر، به [1] مراجعه کنید .

این یک مثال کاربردی در MATLAB / Octave است :

function gb=gabor_fn(sigma,theta,lambda,psi,gamma)

sigma_x = sigma;
sigma_y = sigma/gamma;

% Bounding box
nstds = 3;
xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta)));
xmax = ceil(max(1,xmax));
ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta)));
ymax = ceil(max(1,ymax));
xmin = -xmax; ymin = -ymax;
[x,y] = meshgrid(xmin:xmax,ymin:ymax);

% Rotation 
x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);

gb= exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);

این مثال دیگر در Haskell است :

import Data.Complex (Complex((:+)))
gabor λ θ ψ σ γ x y = exp ( (-0.5) * ((x'^2 + γ^2*y'^2) / (σ^2)) :+ 0) * exp ( 0 :+ (2*pi*x'/λ+ψ) )
    where x' =  x * cos θ + y * sin θ
          y' = -x * sin θ + y * cos θ

(توجه: a :+ b بایدخوانده شده باشد به عنوان  )

ترجمه شده از سایت wikipedia

فیلتر گابور (Gabor filter) چیست؟ قسمت 1
فیلتر گابور (Gabor filter) چیست؟ قسمت 2
فیلتر گابور (Gabor filter) چیست؟ قسمت 3

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

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

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