LIME低亮度图像增强

2023-11-05 05:44
文章标签 亮度 图像增强 lime

本文主要是介绍LIME低亮度图像增强,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LIME低亮度图像增强

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

main.cpp

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <opencv2/imgproc/imgproc.hpp>
#include "lime.h"int main()
{cv::Mat img_in = cv::imread("3.png"), img_out;if (img_in.empty()){std::cout << "Error Input!" << std::endl;return -1;}feature::lime* l;l = new feature::lime(img_in);img_out = l->lime_enhance(img_in);cv::imshow("test", img_out);cv::waitKey();return 0;
}``![在这里插入图片描述](https://img-blog.csdnimg.cn/2809aa49d0a2413db92b974659ab6062.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/3f4f458bb0e6425bad8f5ae0cbca84f2.png)```lime.cpp
#include "lime.h"namespace feature
{lime::lime(cv::Mat src){channel = src.channels();}cv::Mat lime::lime_enhance(cv::Mat& src){cv::Mat img_norm;src.convertTo(img_norm, CV_32F, 1 / 255.0, 0);cv::Size sz(img_norm.size());cv::Mat out(sz, CV_32F, cv::Scalar::all(0.0));auto gammT = out.clone();if (channel == 3){Illumination(img_norm, out);Illumination_filter(out, gammT);//limestd::vector<cv::Mat> img_norm_rgb;cv::Mat img_norm_b, img_norm_g, img_norm_r;cv::split(img_norm, img_norm_rgb);img_norm_g = img_norm_rgb.at(0);img_norm_b = img_norm_rgb.at(1);img_norm_r = img_norm_rgb.at(2);cv::Mat one = cv::Mat::ones(sz, CV_32F);float nameta = 0.9;auto g = 1 - ((one - img_norm_g) - (nameta * (one - gammT))) / gammT;auto b = 1 - ((one - img_norm_b) - (nameta * (one - gammT))) / gammT;auto r = 1 - ((one - img_norm_r) - (nameta * (one - gammT))) / gammT;cv::Mat g1, b1, r1;//TODO <=1threshold(g, g1, 0.0, 0.0, 3);threshold(b, b1, 0.0, 0.0, 3);threshold(r, r1, 0.0, 0.0, 3);img_norm_rgb.clear();img_norm_rgb.push_back(g1);img_norm_rgb.push_back(b1);img_norm_rgb.push_back(r1);cv::merge(img_norm_rgb, out_lime);out_lime.convertTo(out_lime, CV_8U, 255);}else if (channel == 1){Illumination_filter(img_norm, gammT);cv::Mat one = cv::Mat::ones(sz, CV_32F);float nameta = 0.9;//std::cout<<img_norm.at<float>(1,1)<<std::endl;auto out = 1 - ((one - img_norm) - (nameta * (one - gammT))) / gammT;threshold(out, out_lime, 0.0, 0.0, 3);out_lime.convertTo(out_lime, CV_8UC1, 255);}else{std::cout << "There is a problem with the channels" << std::endl;exit(-1);}return out_lime.clone();}void lime::Illumination(cv::Mat& src, cv::Mat& out){int row = src.rows, col = src.cols;for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){out.at<float>(i, j) = lime::compare(src.at<cv::Vec3f>(i, j)[0],src.at<cv::Vec3f>(i, j)[1],src.at<cv::Vec3f>(i, j)[2]);}}}void lime::Illumination_filter(cv::Mat& img_in, cv::Mat& img_out){int ksize = 5;//mean filterblur(img_in, img_out, cv::Size(ksize, ksize));//GaussianBlur(img_in,img_mean_filter,Size(ksize,ksize),0,0);//gammaint row = img_out.rows;int col = img_out.cols;float tem;float gamma = 0.8;for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){tem = pow(img_out.at<float>(i, j), gamma);tem = tem <= 0 ? 0.0001 : tem;  //  double epsolon = 0.0001;tem = tem > 1 ? 1 : tem;img_out.at<float>(i, j) = tem;}}}}

这篇关于LIME低亮度图像增强的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/347810

相关文章

使用WMI改变显示器亮度

文章目录 前言使用WMI调节显示器亮度 前言 最近遇到了新的需求,需要通过代码去改变显示器的亮度。通过调研发现,改变显示器亮度的方式有三种 1.调节伽马值 2.使用WMI 3.使用DDC/CI协议 然而这三个方法都各有缺点: 第一个方式:调节伽马值,效果会收到显示器的影响,有的显示器,或者驱动,会去校准显示器亮度。如果你改变了伽马值,在你的鼠标脱离程序的时候,屏幕亮度就会被校准回

华为手机永久关闭自动亮度 | 使用智慧场景

问题 使用华为手机时,无法在设置中永久性关闭自动亮度,因为每次手机重启后都会自动打开自动亮度。此问题目前无法通过设置去解决,但可以通过华为的智慧场景解决,下文介绍解决方案。 解决方案 智慧场景 打开智慧生活APP,找到场景,进行添加,并设置条件和任务。 添加条件:系统功能 -> 显示和亮度 -> 屏幕 -> 解锁 添加任务:系统功能 -> 显示和亮度 -> 亮度自动调节 -> 关闭 添加的

yolo训练策略--使用 Python 和 OpenCV 进行图像亮度增强与批量文件复制之(图像增强是按梯度变化优化)

接上个博客: https://blog.csdn.net/weixin_43269994/article/details/141753412 优化如下函数: def augment_and_copy_files(base_folder, image_filename, num_augmentations=2, vgain_range=(1, 1.5), process_labels=Tru

yolo训练策略--使用 Python 和 OpenCV 进行图像亮度增强与批量文件复制

简介 在计算机视觉和深度学习项目中,数据增强是一种常用的技术,通过对原始图像进行多种变换,可以增加数据集的多样性,从而提高模型的泛化能力。本文将介绍如何使用 Python 和 OpenCV 实现图像的亮度增强,并将增强后的图像与对应的注释文件批量复制到新目录中。 项目背景 假设你有一个数据集,包含若干图像及其对应的 XML 注释文件和标签文件。在模型训练前,你希望对这些图像进行亮度增强,并生

利用OpenCV根据图片识别环境的亮度

一、前言 在当代数字化转型的浪潮中,计算机视觉技术无疑占据了举足轻重的地位,其应用范围之广,影响力之深,已成为推动社会进步的关键力量之一。而OpenCV,作为计算机视觉领域的佼佼者,凭借其卓越的性能与广泛的兼容性,为开发者提供了强大的工具集,助力其实现复杂视觉任务的高效处理。 环境亮度识别,实质上是一项要求计算机系统能够精准分析并量化图像中光照强度的技术。要求计算机能够理解并量化人类视觉系统对

图像处理--图像增强(一)

我的有道云笔记: http://note.youdao.com/noteshare?id=2b60df50f548a84923e7e201798dd390

【图像增强】使用 Albumentations Python 库(02)

一、说明         在本博客的第 1 部分中,我介绍了使用 Albumentations Python 库进行图像增广的基础知识。本部分介绍高级详细信息。 二、使用 Albumentations 进行语义分割任务 我们将使用来自 TGS 盐鉴定挑战赛的图像和数据。TGS Salt Identification Challenge | Kaggle import random

【算法学习】【图像增强】CHAHE(限制对比度自适应直方图均衡)

转自 : 限制对比度自适应直方图均衡化算法原理、实现及效果 一、自适应直方图均衡化(Adaptive histgram equalization/AHE)       1.简述        自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术。和普通的直方图均衡算法不同,AHE算法通过计算图像的局部直方图,然后重新分布亮度来来改变图像对比度。因此,该算法更适合于改进图

【图像增强】使用 Albumentations Python 库(01)

目录 一、说明 二、Albumentations库 2.1 如何安装  2.2 测试代码示例 2.3 在albumentations库中实现的所有像素级变换 2.4 空间级转换 2.5 混合级别转换 三、让我们看看上述实现中的转换。 3.1 在专辑中实现的天气相关转换 3.2 随机雨 3.3 在相册中处理非 8 位图像 3.4 在文档图像中增强文本(叠加元素) 3.

ISP 3A 算法:自动曝光(AE)中的平均亮度法详解

在自动曝光(AE)算法中,平均亮度法是一种经典且广泛应用的技术。它通过计算场景中所有像素的平均亮度来确定最佳曝光设置,从而保证图像的整体亮度处于适当的水平。尽管该方法相对简单,但它在AE算法中扮演着重要的角色,并为更复杂的曝光计算方法提供了基础。 一、平均亮度法的基本原理 平均亮度法的核心思想是通过测量图像中所有像素的亮度值,并计算其平均值来决定曝光参数。目标是将场景的平均亮度调整到一个理