ガボールフィルタ

ガボールフィルタ（英: Gabor filter）は、画像処理のテクスチャー解析等に用いられる線型フィルタの一種。（2次元のガボールフィルタでは）画像の各点周りの局所領域において、方向毎に特定の周波数成分を抽出することができる。 虹彩認識や指紋認証にも応用されている他、哺乳類の脳の一次視覚野にある単純型細胞の活動をモデル化できることが示されている。名称はガーボル・デーネシュに因む。 細部が異なる種々の定義があるが、基本的にはガウス関数（ガウシアンエンベロープとも呼ばれる）と三角関数（搬送波とも呼ばれる）の積として定義される： x ∈ R n ( n = 1 , 2 ) {\displaystyle {\boldsymbol {x}}\in \mathbb {R} ^{n}(n=1,2)} の函数であるガボールフィルタ g {\displaystyle g} は、 w {\displaystyle w} をガウス関数、 s {\displaystyle s} を三角関数として g ( x ; A , u , P ) = K exp ⁡ ( i P ) w ( x ; A ) s ( x ; u ) {\displaystyle g({\boldsymbol {x}};A,{\boldsymbol {u}},P)=K\exp(iP)w({\boldsymbol {x}};A)s({\boldsymbol {x}};{\boldsymbol {u}})} と定義される。 ここで K {\displaystyle K} はガウシアンエンベロープの強度のスケール、 A {\displaystyle A} はガウシアンエンベロープのスケールや方向を指定する線形変換、 u {\displaystyle {\boldsymbol {u}}} は搬送波の（空間）周波数と方向を表す波数ベクトル、 P {\displaystyle P} は位相オフセットを表す。 w {\displaystyle w} と s {\displaystyle s} の具体的な形は、1次元の場合、通常スケールパラメータ σ {\displaystyle \sigma } により w ( x ; σ ) = exp ⁡ ( − x 2 2 σ 2 ) {\displaystyle w(x;\sigma )=\exp \left(-{\frac {x^{2}}{2\sigma ^{2}}}\right)} , s ( x ; u ) = exp ⁡ ( 2 π i u x ) {\displaystyle s(x;u)=\exp \left(2\pi iux\right)} , 2次元の場合は、ガウシアンエンベロープの方向 θ {\displaystyle \theta } と軸毎のスケールパラメータ σ x , σ y {\displaystyle \sigma _{x},\sigma _{y}} により w ( x , y ; A ( θ , σ x , σ y ) ) = exp ⁡ ( − x ′ 2 + y ′ 2 2 ) {\displaystyle w(x,y;A(\theta ,\sigma _{x},\sigma _{y}))=\exp \left(-{\frac {x'^{2}+y'^{2}}{2}}\right)} , s ( x , y ; u ) = exp ⁡ ( 2 π i ( x , y ) ⋅ u ) {\displaystyle s(x,y;{\boldsymbol {u}})=\exp \left(2\pi i(x,y)\cdot {\boldsymbol {u}}\right)} と表す。ここで ( x ′ , y ′ ) = ( x , y ) A ( θ , σ x , σ y ) {\displaystyle (x',y')=(x,y)A(\theta ,\sigma _{x},\sigma _{y})} で、 A ( θ , σ x , σ y ) = ( cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ) ( 1 σ x 0 0 1 σ y ) {\displaystyle A(\theta ,\sigma _{x},\sigma _{y})={\begin{pmatrix}\cos \theta &-\sin \theta \\\sin \theta &\cos \theta \end{pmatrix}}{\begin{pmatrix}{\frac {1}{\sigma _{x}}}&0\\0&{\frac {1}{\sigma _{y}}}\end{pmatrix}}} である。実部と虚部に分けた形や、更にガウシアンエンベロープの方向と波数ベクトルの方向とを一致させた形（ u = ( f / σ x ) ( cos ⁡ θ , sin ⁡ θ ) {\displaystyle {\boldsymbol {u}}=(f/\sigma _{x})(\cos \theta ,\sin \theta )} ）も用いられる： Re ⁡ g ( x , y ) = K exp ⁡ ( − x ′ 2 + y ′ 2 2 ) cos ⁡ ( 2 π f x ′ + P ) {\displaystyle \operatorname {Re} g(x,y)=K\exp \left(-{\frac {x'^{2}+y'^{2}}{2}}\right)\cos(2\pi fx'+P)} , Im ⁡ g ( x , y ) = K exp ⁡ ( − x ′ 2 + y ′ 2 2 ) sin ⁡ ( 2 π f x ′ + P ) {\displaystyle \operatorname {Im} g(x,y)=K\exp \left(-{\frac {x'^{2}+y'^{2}}{2}}\right)\sin(2\pi fx'+P)} , 画像処理では通常、異なる周波数、検出方向のガボールフィルタで構成されるフィルタバンクの形でよく利用される（これを画像に畳み込んで得られる出力をガボール空間という）。具体的事例は以下： 虹彩認識や指紋認証、顔の表情の認識。 髪型のモデリング。 脊椎の骨梁（trabecular bone）における方向性の分布の分析。 哺乳類の脳の一次視覚野にある単純型細胞の活動のモデル 。 スキャンした文書の中のテキスト部分の抽出（一般にテキスト部分が、画像部分に比べ相対的に高周波数成分が多いことを利用している）。 シーンを記述する低次元の大域特徴。 ガボールフィルタはガボールウェーブレットと直接関係しており、ガボールフィルタに回転や膨張を加えることで設計されるが、拡大は非常に時間がかかるため、ガボールウェーブレットでは適用されない[要出典]。 scikit-imageにおける実装 MATLAB function gb=gabor_fn(sigma_x,sigma_y,theta,lambda,psi,gamma) sz_x=fix(6*sigma_x); if mod(sz_x,2)==0, sz_x=sz_x+1;end sz_y=fix(6*sigma_y); if mod(sz_y,2)==0, sz_y=sz_y+1;end [x y]=meshgrid(-fix(sz_x/2):fix(sz_x/2),fix(-sz_y/2):fix(sz_y/2)); % 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+gamma^2*y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);