簡體   English   中英

C中的Gabor濾波器卷積矩陣

[英]Gabor filter convolution matrix in C

我正在嘗試用C語言編寫一種算法,該算法計算要應用於圖像的gabor濾波器的卷積矩陣。 現在,我只需要卷積矩陣。

因此,我正在使用以下公式: http : //i.stack.imgur.com/APMC7.png

我將其映射到以下這段代碼:

#include <stdio.h>
#include <math.h>
#define PI 3.14159265

int main(){
    int kernelSize = 5;
    float kernel[kernelSize][kernelSize];
    int x, y;
    //gamma = aspect ratio
    //lambda = wavelength
    //theta = orientation
    float xz, yz, theta, sigma, gamma, lambda;
    theta = 0;
    sigma = 1;
    lambda = 1;
    gamma = 1;

    for(x = 0; x < kernelSize; x++){
        for(y = 0; y < kernelSize; y++){
            xz = x * cos(theta) + y * sin(theta);
            yz = -x * sin(theta) + y * cos(theta);
            kernel[x][y] = exp(-(xz*xz + gamma*gamma*yz*yz)/(2*sigma*sigma)) * cos(2*PI*xz/lambda);
        }
    }
    for(x = 0; x < kernelSize; x++){
        for(y = 0; y < kernelSize; y++){
            printf("%.2f ", kernel[x][y]);
        }
        printf("\n)");
    }
    return(0);

}

這些參數的輸出為:

1.00 0.61 0.14 0.01 0.00
0.61 0.37 0.08 0.01 0.00 
0.14 0.08 0.02 0.00 0.00 
0.01 0.01 0.00 0.00 0.00 
0.00 0.00 0.00 0.00 0.00

我的問題是:1-它是gabor濾波器的有效卷積矩陣嗎? 如果我將其與圖像卷積,它將應用gabor濾鏡嗎? 2-我應該對所有矩陣值求和並歸一化嗎? 3-我有什么要解決的嗎?

提前致謝!

我不了解C,因此無法評論您的代碼,但是:

  1. 根據定義,Gabor濾波器應具有實部和虛部-即復數值。
  2. 您的內核看起來不像gabor內核。 它看起來應該像正弦曲線乘以高斯-您的圖像看起來像是居中於左上角的高斯。 無需對其進行標准化。

我還將調整您的參數,以使它們不統一。 繪制您的過濾器,看看在Google上搜索“ Gabor wavelet”時看起來像什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM