opencv - 用旋转的 Gabor 核过滤的图像差异很大

标签 opencv image-processing pattern-matching computer-vision object-recognition

我计算了 8 个 Gabor 滤波器,Theta 旋转 m*PI/8。

作为 OpenCv cv2.getGaborKernel 输入的 Gabor 内核参数: ksize = 11, theta = m*PI/8 lambd = 16/3 sigma = (5.09030 * 8.0)/(3.0 * PI) gamma = 0.5890 psi = 0

kernel = cv2.getGaborKernel(ksize = (ksize,ksize), sigma = sigma, 
               theta = theta, lambd = lambd, 
                               gamma = gamma, psi = psi)

参数是根据 Zhen, Zhao, Wang 的“使用 Gabor 滤波器系列进行特征提取”设计的。 采用的公式是Gabor滤波器的第三族之一。

得到的8个过滤器分别是:

Obtained Gabor filters

原图为:

enter image description here

图片过滤得到的图片有:

enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

它们是用cv2.filter2D计算的

fimg = cv2.filter2D(img, cv2.CV_64F, kernel)

为什么 theta = 0 和 theta = PI/2.0 的 gabor 滤波器与其他滤波器相比具有真正不同的连续分量? 这对我来说真的没有意义。

最佳答案

原因是我将 PSI 参数设置为 0。问题立即得到解决,psi 保持在默认值 PI/2。

关于opencv - 用旋转的 Gabor 核过滤的图像差异很大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25938649/

相关文章:

c++ - 在线程函数中使用数据 vector 时发生线程竞赛

python - 来自连接到远程机器的相机的 Opencv 流

c++ - openCV中的imshow函数

syntax - 如何在 'let' 定义中使用模式匹配?

haskell - 在模式匹配中使用 `++`

c++ - OpenCV 从 Mat 图像中获取像素 channel 值

python - 使用 opencv 在另一个图像中查找相似图像

python - CamShift + OpenCv 中的人脸检测

Python - 检测图像的所需角

struct - Rust 禁用结构构造