Java 如何在OpenCV中组合Gabor滤波器的结果

Java 如何在OpenCV中组合Gabor滤波器的结果,java,filter,opencv3.0,Java,Filter,Opencv3.0,我正试图通过使用OpenCV for Java中的gabor滤波器和一组4个滤波器(4θ)来增强指纹图像: 现在,我的问题是如何组合这些结果,gabor1,gabor2,gabor3和gabor4,以得到整个增强图像 我尝试使用Core.add(src1、src2、dst)或 Core.addWeighted(enhanced , 0, gabor1, 1, 0, enhanced ); Core.addWeighted(enhanced , 1, gabor2, 1, 0, enhanced

我正试图通过使用OpenCV for Java中的gabor滤波器和一组4个滤波器(4θ)来增强指纹图像:

现在,我的问题是如何组合这些结果,gabor1,gabor2,gabor3和gabor4,以得到整个增强图像
我尝试使用
Core.add(src1、src2、dst)

Core.addWeighted(enhanced , 0, gabor1, 1, 0, enhanced );
Core.addWeighted(enhanced , 1, gabor2, 1, 0, enhanced );
Core.addWeighted(enhanced , 1, gabor3, 1, 0, enhanced );
Core.addWeighted(enhanced , 1, gabor4, 1, 0, enhanced );
,但似乎做了一种减法,最后我得到了一幅几乎是白色的图像。
希望有人能帮助我。我用的是java,C++实现非常类似。 编辑:
以下是输入和结果的图像:

输入Img:


Img GABR1:



Img GABR2:



Img gabor3:



Img gabor4:



最后,添加的(带有addweighted)Img:

好的,我想我找到了问题的解决办法
我的输入图像(myImg)是CV_8UC1类型,但gabor内核使用CV_32F或CV_64F类型。因此,我必须在处理之前将myImg转换为该类型:

myImg.convertTo(myImg, CvType.CV_32F);
此外,我将gabor1…4定义为CV_32F类型,而不是CV_8UC1。
然后,我将
Core.addWeighted(…)
应用于所有4个gabor滤波器(如我问题中的上述),得到了预期的结果。
这有点傻,但这是一个常见的错误(我认为)

myImg.convertTo(myImg, CvType.CV_32F);