原图
高斯模糊
使用高斯滤波器模糊图像。
该函数将源图像与指定的高斯核进行卷积。
void cv::GaussianBlur(InputArray src, OutputArray dst,Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT )
ksize 高斯核的大小
sigmaX x方向的高斯核标准差
sigmaY y方向的高斯核标准差
测试(代码在后面)
getDerivKernels
该函数计算并返回空间图像导数的滤波器系数。
void cv::getDerivKernels(OutputArray kx, OutputArray ky, int dx, int dy, int ksize, bool normalize = false, int ktype = CV_32F )
kx 行系数
ky 列系数
dx x的导数顺序
dy y的导数顺序
ksize 核大小
normalize 是否归一化系数
测试
getGaborKernel
Gabor滤波器是一种用于纹理分析的线性滤波器,本质上是指它分析图像中某个点或区域周围局部区域内特定方向的特定频率内容是否存在的分析。
返回 Gabor 滤波器系数。
Mat cv::getGaborKernel(Size ksize, double sigma, double theta,double lambd,double gamma,double psi = CV_PI *0.5,int ktype = CV_64F )
ksize 返回核的大小
sigma 高斯包络的标准偏差。
theta Gabor函数平行条纹的法线方向
lambd 正弦因子的波长
gamma 空间纵横比
psi 相位偏移
Gabor滤波器维基百科链接
测试
getGaussianKernel
该函数计算并返回 ksize×1 高斯滤波器系数矩阵
Mat cv::getGaussianKernel(int ksize, double sigma, int ktype = CV_64F )
ksize 核大小 奇数
sigma 标准差
测试
代码
#include <iostream>
#include <string>
#include <vector>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
class Test_opencv {
public:
void save_img(std::string pic_name, cv::Mat pic, std::string path = "C:\\Users\\Administrator\\Desktop\\pic\\") {
std::string save_path = path + pic_name + ".jpg";
cv::imwrite(save_path, pic);
}
void image_show(cv::Mat pic) {
cv::imshow("result", pic);
cv::waitKey(0);
}
};
int main() {
Test_opencv test_opencv;
cv::Mat pic;
cv::Mat image;
image = cv::imread("C:\\Users\\Administrator\\Desktop\\grey.jpg", CV_LOAD_IMAGE_GRAYSCALE);// , CV_LOAD_IMAGE_COLOR);
//cv::GaussianBlur(image, pic, cv::Size(7, 7), 1);
//test_opencv.image_show(pic);
/*
cv::Mat x;
cv::Mat y;
cv::getDerivKernels(x, y, 1, 1, 1, false, CV_32F);
std::cout << "x: " << x << std::endl;
std::cout <<"y: " << y << std::endl;
*/
cv::Mat kernel;
//kernel = cv::getGaborKernel(cv::Size(3, 3), 1, 45, 4, 14);
kernel = cv::getGaussianKernel(3, 1, CV_64F);
std::cout << "kernel: " << kernel << std::endl;
//test_opencv.save_img("GaussianBlur", pic);
return 0;
}