不同的' theta' for Gabor Filter返回没有方向的图像

时间:2015-05-09 15:39:08

标签: java opencv image-processing gaussian wavelet

我使用以下 theta - {0,45,90,135}在图片上应用了Gabor filter。但是得到的图像完全相同,方向角相同!

我预计使用 theta = 90 的Gabor滤镜的结果将与 theat = 45 的结果不同,但使用不同的Gabor滤镜后 theta ,我得到的图像没有方向差异!

我使用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

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]);
    }

}

image_0度: enter image description here

image_45度: enter image description here

image_90度: enter image description here

image_135度: enter image description here

使用theta = 0,45,90,135应用Gabor后的

图像,没有平滑: enter image description here

1 个答案:

答案 0 :(得分:0)

问题就在这里:

Marker thisUserMarker = map.addMarker(new MarkerOptions()
           .position(new LatLng(CURRENT_LAT, CURRENT_LNG))
           .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_marker_current_location)));

我认为应该是这样的:

Mat gaborCoeff = Imgproc.getGaborKernel(new Size(3,3), 2, theta[i], 4.1, 54.1, 0, CvType.CV_32F);

我不确定lambda和psi的值。也许您应该尝试使用不同的值查看生成的图像。

最后,Gabor结果就是你所谓的image_0度,image_45度。即使它们之间没有重大变化,我也会更改参数