- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
OpenCV 中 intensity_transform 模块提供的一个用于图像增强的函数,全称为:
"Brightness Increasing with salient features and Contrast Enhancement" (BIMEF)
这是一个经典的多尺度图像增强算法,主要用于改善暗光图像的亮度与对比度,同时保留图像中的显著特征(如边缘、纹理等)。
BIMEF 是由 K.-K. Ma 和 Xiao Fu 等人提出的一种适用于低光照图像增强的方法,其核心思想是:
- 提升图像亮度
- 增强图像对比度
- 保留显著特征(如边缘、纹理)
该方法结合了物理模型与图像统计特性,使用一个基于 Retinex 理论的多尺度增强策略。
函数原型
void cv::intensity_transform::BIMEF
(
InputArray input,
OutputArray output,
float mu = 0.5f,
float a = -0.3293f,
float b = 1.1258f
)
参数
- input:输入彩色图像。
- output:结果图像。
- mu:增强比率。
- a:相机响应函数(CRF)中的 a 参数。
- b:相机响应函数(CRF)中的 b 参数。
代码示例
#include <opencv2/intensity_transform.hpp>
#include <opencv2/opencv.hpp>
int main()
{
// 读取图像
cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png" );
if ( img.empty() )
{
std::cerr << "Could not load image!" << std::endl;
return -1;
}
cv::Mat enhanced;
// 调用 BIMEF 进行图像增强
cv::intensity_transform::BIMEF( img, enhanced );
// 显示结果
cv::imshow( "Original", img );
cv::imshow( "Enhanced (BIMEF)", enhanced );
cv::waitKey( 0 );
return 0;
}