opencv bilateralFilter函数
时间: 2023-10-15 12:02:36 浏览: 160
opencv的bilateralFilter函数是一个双边滤波器,用于平滑图像并保留边缘信息。它使用一个高斯滤波器和一个范围滤波器来平滑图像。高斯滤波器用于平滑图像的空间域,范围滤波器用于平滑图像的灰度值域。这种双边滤波器能够保留图像的边缘和细节信息,同时去除噪声。
函数原型:
```cpp
void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, int borderType=BORDER_DEFAULT)
```
参数解释:
- InputArray src:输入图像。
- OutputArray dst:输出图像。
- int d:滤波器的直径。如果d为零,则根据sigmaSpace计算直径。
- double sigmaColor:颜色空间的标准差。
- double sigmaSpace:坐标空间的标准差。
- int borderType:边界类型,默认为BORDER_DEFAULT。
示例代码:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src = imread("lena.jpg");
if (src.empty()) {
cout << "could not load image..." << endl;
return -1;
}
Mat dst;
bilateralFilter(src, dst, 15, 80, 80);
imshow("input", src);
imshow("output", dst);
waitKey(0);
return 0;
}
```
这个示例代码使用bilateralFilter函数对lena.jpg进行双边滤波,前3个参数分别为直径、颜色标准差和空间标准差。
阅读全文