如何调用Opencv自带的引导滤波函数
时间: 2024-05-25 07:19:44 浏览: 10
可以使用以下代码调用Opencv自带的引导滤波函数:
cv::Mat image; // 假设这是你的图像
cv::Mat guided_image;
cv::Mat output_image;
int radius = 9; // 引导滤波器的半径
double eps = 0.2 * 0.2; // 引导滤波器的eps值
cv::Mat mean_I, mean_p;
cv::boxFilter(image, mean_I, CV_32F, cv::Size(radius, radius));
cv::boxFilter(cv::Mat::ones(image.size(), CV_32F), mean_p, CV_32F, cv::Size(radius, radius));
cv::Mat mean_Ip = image.clone();
cv::boxFilter(image, mean_Ip, CV_32F, cv::Size(radius, radius));
cv::Mat cov_Ip = mean_Ip - mean_I.mul(mean_p);
cv::Mat mean_II, var_I;
cv::boxFilter(image.mul(image), mean_II, CV_32F, cv::Size(radius, radius));
var_I = mean_II - mean_I.mul(mean_I);
cv::Mat a = cov_Ip / (var_I + eps);
cv::Mat b = mean_p - a.mul(mean_I);
cv::boxFilter(a, guided_image, CV_32F, cv::Size(radius, radius));
cv::boxFilter(b, output_image, CV_32F, cv::Size(radius, radius));
output_image = guided_image.mul(image) + output_image;
// 现在output_image中包含了引导滤波后的图像