use*_*121 5 java opencv image-processing gaussian wavelet
我在图像上应用了Gabor滤波器,其中包含以下theta - {0,45,90,135}.但是得到的图像完全相同,方向角相同!
我期望应用具有θ= 90的 Gabor滤波器的结果将在方位上与具有theat = 45的结果不同,但是在使用具有不同θ的 Gabor滤波器之后,我得到的图像在方向上没有差异!
我使用Gabor过滤器错了吗?因为我期望每个图像根据Gabor滤波器中指定的方向角度具有不同的方向.
我为Gabor过滤器设置的参数如下:
kernel size = Size(5,5);
theta = {0,45,90,135}
sigma = ,2
type = CVType.CV_32F
lambda = 100
gamma = ,5
psi = 5
Run Code Online (Sandbox Code Playgroud)
代码:
public static void main(String[] args) {
MatFactory matFactory = new MatFactory();
FilePathUtils.addInputPath(path_Obj);
Mat bgrMat = matFactory.newMat(FilePathUtils.getInputFileFullPathList().get(0));
Mat gsImg = SysUtils.rgbToGrayScaleMat(bgrMat);
double[] theta = new double[4];
theta[0] = 0;
theta[1] = 45;
theta[2] = 90;
theta[3] = 135;
for (int i = 0; i < 4; i++) {
Mat gaborCoeff = Imgproc.getGaborKernel(new Size(3,3), 2, theta[i], 4.1, 54.1, 0, CvType.CV_32F);
Mat dest = new Mat();
Imgproc.filter2D(gsImg, dest, CvType.CV_32F, gaborCoeff);
ImageUtils.showMat(dest, "theta = " + theta[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
image_0度:

image_45度:

image_90度:

image_135度:

使用theta = 0,45,90,135应用Gabor后的图像,没有平滑:

也许问题就在这里:
Mat gaborCoeff = Imgproc.getGaborKernel(new Size(3,3), 2, theta[i], 4.1, 54.1, 0, CvType.CV_32F);
Run Code Online (Sandbox Code Playgroud)
我认为应该是这样的:
Mat gaborCoeff = Imgproc.getGaborKernel(new Size(3,3), sigma, theta[i], lambda, psi, 0, CvType.CV_32F);
Run Code Online (Sandbox Code Playgroud)
我不确定 lambda 和 psi 的值。也许您应该尝试查看具有不同值的结果图像。
最后,Gabor结果就是你所说的image_0度,image_45度。即使它们之间没有重大变化,我也会更改参数