OpenCV计算摄影学(18)平滑图像中的纹理区域同时生存边沿信息函数textureFl ...

打印 上一主题 下一主题

主题 1013|帖子 1013|积分 3039


  • 操纵系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11
算法形貌

cv::textureFlattening 是 OpenCV 中用于图像处置处罚的一个函数,旨在平滑图像中的纹理区域,同时生存边沿信息。该技术特别适用于需要淘汰图像中噪声或不需要的细节,但又想保持紧张特征(如边沿)的应用场景。
通过仅生存边沿位置处的梯度,然后与泊松求解器集成,可以打扫选定区域的纹理,使其内容出现平展的表面。这里使用了Canny边沿检测器。
函数原型

  1. void cv::textureFlattening        
  2. (
  3.         InputArray          src,
  4.         InputArray          mask,
  5.         OutputArray          dst,
  6.         float          low_threshold = 30,
  7.         float          high_threshold = 45,
  8.         int          kernel_size = 3
  9. )        
复制代码
参数



  • 参数src 输入8位3通道图像。
  • 参数 mask 输入8位1或3通道图像。
  • 参数 dst 输出图像,与src具有雷同的大小和类型。
  • 参数 low_threshold 范围从0到100。
  • 参数 high_threshold 值大于100。
  • 参数 kernel_size 使用的Sobel核的大小。
代码示例

  1. #include <iostream>
  2. #include <opencv2/opencv.hpp>
  3. using namespace cv;
  4. using namespace std;
  5. int main()
  6. {
  7.     // 加载输入图像
  8.     Mat src = imread( "/media/dingxin/data/study/OpenCV/sources/images/jiangnan.jpg" );
  9.     if ( src.empty() )
  10.     {
  11.         cout << "无法加载图像,请检查文件名和路径。\n";
  12.         return -1;
  13.     }
  14.     // 创建一个掩模,选择整个图像进行处理
  15.     Mat mask = Mat::ones( src.size(), CV_8UC1 ) * 255;
  16.     // 输出图像
  17.     Mat dst;
  18.     // 应用纹理平整化
  19.     textureFlattening( src, mask, dst );
  20.     // 显示结果
  21.     imshow( "Original Image", src );
  22.     imshow( "Processed Image", dst );
  23.     waitKey( 0 );
  24.     return 0;
  25. }
复制代码
运行效果



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表