[英]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,因此無法評論您的代碼,但是:
我還將調整您的參數,以使它們不統一。 繪制您的過濾器,看看在Google上搜索“ Gabor wavelet”時看起來像什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.