『红外图像 数据增强』DDE(Digital Detail Enhancement)算法

DDE处理的细节

  1. 分离背景层和细节层:使用特殊的滤波器,将图像分成背景层和细节层。背景层通常包含低频信息,而细节层包含高频信息。

  2. 对背景层进行灰度增强:通过对背景层应用适当的灰度增强算法,提高背景层的对比度和视觉感知。

  3. 对细节层进行细节增强和噪声抑制:细节层中包含着图像的细节信息,可以利用非线性处理方法,例如增强锐化或边缘增强算法来增强细节,并抑制噪声。

  4. 动态范围调整:根据图像的整体动态范围,对背景层和细节层进行动态范围的调整和压缩,以便将原本动态范围较高的图像信息映射到8位输出图像的范围内。

  5. 合成输出图像:将增强后的背景层和细节层重新合成为一幅8位输出图像,以显示大动态温差和目标局部细节信息。

如上,DDE技术通过滤波器分离、背景层和细节层的处理、动态范围调整等步骤,能够提取和突出图像的细节,并将其限制在8位输出图像中,以保留大动态温差和目标局部的细节信息。

分离背景层和细节层:

对背景层进行灰度增强:

两种方法的效果
自适应直方图均衡化

对比度拉伸

对细节层进行细节增强

结果比对:

DDE算法

直接对输入图像 应用 直方图均衡化

直接对输入图像应用自适应直方图均衡化
自适应直方图均衡化(局部对比度增强)

深度学习学习到图像的哪些特征:

边缘特征:边缘,即灰度或颜色变化的地方

纹理特征:即图像中重复的局部结构

形状特征:包括物体的轮廓,形状的几何特征

颜色特征:不同颜色空间的颜色特征,包括颜色分布、颜色直方图

空间结构特征:不同物体之间的空间结构关系,包括物体的相对位置、大小、方向等特征

层次结构特征:从低层次的局部特征到高层次的语义特征

个人总结:

我是为了做红外目标检测才做的DDE数据增强

个人感觉DDE算法将背景和前景区分度加大,提高图像对比度,同时边缘特征、性状特征很清楚

而直方图均衡化有点曝光太强的感觉,边缘特征、性状特征不太清楚

自适应直方图均衡化后,边缘特征、性状特征也比较清楚

DDE算法处理后的比自适应直方图肉眼上看上去更舒服,但是还是需要结合模型训练才能看出DDE算法是否比自适应直方图要好!

代码:

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

using namespace cv;


int main()
{
    // 读取输入图像
    Mat inputImage = imread("/home/jason/work/01-img/infrared.png",IMREAD_GRAYSCALE);
    imshow("input", inputImage);

    // -------------------
    // 执行DDE细节增强
    // -----------------

    // 第一步:滤波器分离低频和高频信息
    Mat blurImg, detailImg;
    GaussianBlur(inputImage, blurImg, Size(0, 0), 10);
    detailImg = inputImage - blurImg;
    imshow("blur", blurImg);
    imshow("detai", detailImg);

    // 第二步,对低频信息应用合适的灰度增强算法
    Mat enhancedBlurImg, enhancedDetailImg;

//    double min_val, max_val;// 拉伸对比度
//    cv::minMaxLoc(blurImg, &min_val, &max_val);
//    cv::convertScaleAbs(blurImg, enhancedBlurImg, 255.0/ (max_val - min_val), -255.0 * min_val/ (max_val - min_val));

    cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(2.0, cv::Size(8,8)); // 自适应直方图均衡化,用于灰度增强
    clahe->apply(blurImg, enhancedBlurImg);
    imshow("enhancedBlurImg", enhancedBlurImg);

    Mat enhancedBlurImg_blur;
    cv::bilateralFilter(enhancedBlurImg, enhancedBlurImg_blur, 9, 75, 75); // 双边滤波,用于去除噪声
    imshow("enhancedBlurImg-blur", enhancedBlurImg_blur);


    // 第三步,对高频信息应用合适的细节增强和噪声抑制算法
     cv::Ptr<cv::CLAHE> clahe_ = cv::createCLAHE(); // 自适应直方图均衡化(局部对比度增强),可增强细节
     clahe_->setClipLimit(4.0);
     clahe_->apply(detailImg, enhancedDetailImg);
     imshow("enhancedDetailImg", enhancedDetailImg);


//     Mat enhancedDetailImg_blur;
//     cv::fastNlMeansDenoising(enhancedDetailImg, enhancedDetailImg_blur, 10, 10, 7); // NL-Means非局部均值去噪,可抑制噪音
//     imshow("enhancedDetailImg_blur", enhancedDetailImg_blur);

    // 第四步
    // 合成最终的输出图像
     Mat output;
    cv::addWeighted(enhancedBlurImg, 0.3, enhancedDetailImg, 0.7, 0,output);
    imshow("output", output);


    // -------------
    // 自适应直方图均衡化、直方图均衡化来对比DDE算法效果
    // -----------
    Mat out2;
    cv::Ptr<cv::CLAHE> clahe2 = cv::createCLAHE(2.0, cv::Size(8,8)); // 自适应直方图均衡化,用于灰度增强
    clahe2->apply(inputImage, out2);
    imshow("自适应直方图均衡化", out2);

    Mat out3;
    cv::equalizeHist(inputImage, out3);
    imshow("直方图均衡化", out3);



    // 等待按键退出
    waitKey(0);

    return 0;
}

2023.07.19 更新

感觉

相关推荐
551只玄猫14 小时前
KNN算法基础 机器学习基础1 python人工智能
人工智能·python·算法·机器学习·机器学习算法·knn·knn算法
qq_3751679814 小时前
No module named ‘mmcv._ext‘
人工智能·计算机视觉
JoengGaap14 小时前
智能体学习(定义、框架、简单实现搭建)
人工智能
love530love15 小时前
Windows 11 下再次成功本地编译 Flash-Attention 2.8.3 并生成自定义 Wheel(RTX 3090 sm_86 专属版)
人工智能·windows·笔记·编译·flash_attn·flash-attn·flash-attention
模型启动机15 小时前
港大联合字节跳动提出JoVA:一种基于联合自注意力的视频-音频联合生成模型
人工智能·ai·大模型
无心水15 小时前
【神经风格迁移:全链路压测】29、AI服务压测实战:构建全链路压测体系与高并发JMeter脚本设计
人工智能·高并发·混沌工程·全链路压测·ai镜像开发·ai镜像·神经风格
怪我冷i15 小时前
Zed编辑器安装与使用Agent Servers(腾讯CodeBuddy、阿里百炼Qwen Code、DeepSeek Cli)
人工智能·编辑器·ai编程·ai写作·zed
AI_Auto15 小时前
智能制造-AI质检六大场景
人工智能·制造
特立独行的猫a16 小时前
AI工具推荐:Google 神秘武器 CodeWiki ---上古项目的终极克星
人工智能