Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不同的';θ';对于Gabor滤波器,返回无方向的图像_Java_Opencv_Image Processing_Gaussian_Wavelet - Fatal编程技术网

Java 不同的';θ';对于Gabor滤波器,返回无方向的图像

Java 不同的';θ';对于Gabor滤波器,返回无方向的图像,java,opencv,image-processing,gaussian,wavelet,Java,Opencv,Image Processing,Gaussian,Wavelet,我用以下θ-{0,45,90135}应用于图像。但是得到的图像在相同的方向角下是完全相同的 我期望应用θ=90的Gabor滤波器的结果在方向上会与θ=45的结果不同,但使用不同θ的Gabor滤波器后,我得到的图像在方向上没有差异 我是否使用了Gabor滤波器错误?因为我期望每幅图像根据Gabor滤波器中指定的方向角具有不同的方向 我为Gabor滤波器设置的参数如下: kernel size = Size(5,5); theta = {0,45,90,135} sigma = ,2 type =

我用以下θ-{0,45,90135}应用于图像。但是得到的图像在相同的方向角下是完全相同的

我期望应用θ=90的Gabor滤波器的结果在方向上会与θ=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
代码

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

}
publicstaticvoidmain(字符串[]args){
材料工厂材料工厂=新材料工厂();
addInputPath(路径\对象);
Mat bgrat=matFactory.newMat(FilePathUtils.getInputFileFullPathList().get(0));
Mat gsImg=SysUtils.rgbToGrayScaleMat(bgrat);
double[]θ=新的double[4];
θ[0]=0;
θ[1]=45;
θ[2]=90;
θ[3]=135;
对于(int i=0;i<4;i++){
Mat gaborCoeff=Imgproc.getGaborKernel(新尺寸(3,3),2,θ[i],4.1,54.1,0,CvType.CV_32F);
Mat dest=新Mat();
Imgproc.filter2D(gsImg,dest,CvType.CV_32F,gaborCoeff);
ImageUtils.showMat(dest,“theta=“+theta[i]);
}
}
图像\u 0度:

图像45度:

图像\u 90度:

图像\u 135度:

应用θ=0,45,90135的Gabor后的图像,无需平滑:

问题可能出在这里:

Mat gaborCoeff = Imgproc.getGaborKernel(new Size(3,3), 2, theta[i], 4.1, 54.1, 0, CvType.CV_32F);
我认为应该是这样的:

Mat gaborCoeff = Imgproc.getGaborKernel(new Size(3,3), sigma, theta[i], lambda, psi, 0, CvType.CV_32F);
我不确定λ和psi的值。也许您应该尝试查看具有不同值的结果图像


最后,Gabor结果就是你们所说的图像0度,图像45度。即使它们之间没有明显的变化,我也会改变参数

你能给我们看看你编写的将Gabor滤波器应用于图像的代码吗?@rayryeng很抱歉回复太晚,请查找上面的代码和输出updated@user2121请将
lambda
更改为10。如果你有零钱,请告诉我。