OpenCV计算摄影学(18)平滑图像中的纹理区域同时保留边缘信息函数textureFlattening()

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

算法描述

cv::textureFlattening 是 OpenCV 中用于图像处理的一个函数,旨在平滑图像中的纹理区域,同时保留边缘信息。该技术特别适用于需要减少图像中噪声或不需要的细节,但又想保持重要特征(如边缘)的应用场景。

通过仅保留边缘位置处的梯度,然后与泊松求解器集成,可以清除选定区域的纹理,使其内容呈现平坦的外观。这里使用了Canny边缘检测器。

函数原型

cpp 复制代码
void cv::textureFlattening 	
(
	InputArray  	src,
	InputArray  	mask,
	OutputArray  	dst,
	float  	low_threshold = 30,
	float  	high_threshold = 45,
	int  	kernel_size = 3 
) 	

参数

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

代码示例

cpp 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main()
{
    // 加载输入图像
    Mat src = imread( "/media/dingxin/data/study/OpenCV/sources/images/jiangnan.jpg" );
    if ( src.empty() )
    {
        cout << "无法加载图像,请检查文件名和路径。\n";
        return -1;
    }

    // 创建一个掩模,选择整个图像进行处理
    Mat mask = Mat::ones( src.size(), CV_8UC1 ) * 255;

    // 输出图像
    Mat dst;

    // 应用纹理平整化
    textureFlattening( src, mask, dst );

    // 显示结果
    imshow( "Original Image", src );
    imshow( "Processed Image", dst );
    waitKey( 0 );

    return 0;
}

运行结果

相关推荐
蹦蹦跳跳真可爱5891 分钟前
Python----大模型(大模型微调--BitFit、Prompt Tuning、P-tuning、Prefix-tuning、LORA)
人工智能·python·深度学习·自然语言处理·transformer
小杨勇敢飞19 分钟前
大语言模型的解码策略:贪婪解码与波束搜索
人工智能·语言模型·自然语言处理
喵王叭22 分钟前
【大模型核心技术】Agent 理论与实战
人工智能·langchain
golitter.34 分钟前
pytorch的 Size[3] 和 Size[3,1] 区别
人工智能·pytorch·python
乙真仙人39 分钟前
数据,正在成为AI大模型最后的护城河
大数据·人工智能·数字化
eric-sjq1 小时前
基于深度学习的图像到文本序列转换技术
人工智能·深度学习
源图客1 小时前
Ubuntu22.4部署大模型前置安装
人工智能·深度学习
青梅主码1 小时前
CB Insights 最新发布《2025年第二季度 AI 行业报告》:全球 AI 投资创历史新高,美国仍是 AI 投资的中心
人工智能
下面我就简单说两句1 小时前
个人项目介绍:语音识别小助手
人工智能·语音识别