做网站闵行,个人域名注册流程,二级域名查询网站,wordpress 登录验证操作系统#xff1a;ubuntu22.04 OpenCV版本#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言#xff1a;C11
功能描述
bilateralFilter是图像处理和计算机视觉领域中的一种高级图像滤波技术#xff0c;特别设计用于在去除噪声的同时保留图像的边缘和细节。相比于传… 操作系统ubuntu22.04 OpenCV版本OpenCV4.9 IDE:Visual Studio Code 编程语言C11
功能描述
bilateralFilter是图像处理和计算机视觉领域中的一种高级图像滤波技术特别设计用于在去除噪声的同时保留图像的边缘和细节。相比于传统的滤波器如均值滤波或高斯滤波双边滤波器能够在平滑图像的同时保持重要特征的清晰度。
双边滤波器的工作原理是通过一个高斯权重函数来计算每个像素的输出值这个函数不仅考虑到空间上的邻近度还考虑到像素值强度或颜色的相似度。换句话说每个像素的新值是由其周围像素的加权平均得出的其中权重取决于两个因素空间距离和像素强度差异。
函数原型
函数应用双边滤波器到输入图像上双边滤波器能够非常好地减少不想要的噪声同时保持边缘相当清晰。然而与大多数滤波器相比它的运行速度非常慢。
标准差值Sigma values为了简化设置你可以将两个标准差值设置为相同。如果它们很小 10滤波器的效果将不明显而如果它们很大 150滤波器的效果会非常强烈可能会使图像呈现出“卡通化”的外观。
滤波器尺寸大尺寸的滤波器d 5运行得非常慢因此对于实时应用建议使用d5而对于需要重度降噪的离线应用或许可以使用d9。
此滤波器不会在原地inplace工作也就是说它不会直接修改输入图像而是产生一个新的输出图像。
void cv::bilateralFilter
(InputArray src,OutputArray dst,int d,double sigmaColor,double sigmaSpace,int borderType BORDER_DEFAULT
)
参数
参数 src 可以是8位或浮点型单通道或三通道的图像。参数 dst 目标图像其大小和类型与源图像src相同 。参数 d 在过滤过程中使用的每个像素邻域的直径。如果该值是非正数它将从sigmaSpace计算得出。参数 sigmaColor 色彩空间中的滤波器标准差。参数值越大意味着在像素邻域内参见sigmaSpace距离较远的颜色会被更多地混合在一起从而导致更大区域的半等色块出现。参数 sigmaSpace坐标空间中的滤波器标准差。参数值越大意味着只要颜色足够接近参见sigmaColor距离较远的像素也会相互影响。当d0时它规定了邻域的大小不受sigmaSpace的影响。否则d与sigmaSpace成比例。参数 borderType 用于推算图像外像素的边界模式详情请参阅BorderTypes
代码 #include opencv2/opencv.hpp
#include iostreamint main(int argc, char** argv)
{// 读取图像cv::Mat src cv::imread(/media/dingxin/data/study/OpenCV/sources/images/fruit_small.jpg, cv::IMREAD_COLOR);if (!src.data){std::cerr Error: Image cannot be loaded.\n;return -1;}// 设置双边滤波参数int d 9; // 直径double sigmaColor 210; // 颜色空间标准差double sigmaSpace 75; // 坐标空间标准差cv::Mat dst;// 应用双边滤波cv::bilateralFilter(src, dst, d, sigmaColor, sigmaSpace);// 显示原图和处理后的图像cv::namedWindow(Original Image, cv::WINDOW_NORMAL);cv::imshow(Original Image, src);cv::namedWindow(Bilateral Filtered Image, cv::WINDOW_NORMAL);cv::imshow(Bilateral Filtered Image, dst);// 等待用户按键退出cv::waitKey(0);return 0;
}
运行结果 你可以修改sigmaColor和sigmaSpace的值看看运行效果有啥不同增强对参数的理解