• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: C/C++
  • 标签: OpenCV代码  

资源简介

自己编写的彩色图像自适应增强的完整代码,下载后配置环境即可运行。无C币的可以直接在我博客留言,我会发送给你。https://blog.csdn.net/u013921430/article/details/83865427

资源截图

代码片段和文件信息

//--------------------------
//Adaptive Contrast Enhancement(自适应对比度增强,ACE)
//不用先生,2018.11.08
//-------------------------------

#include
#include
#include

using namespace std;
using namespace cv;


//--------------------
//函数功能:获取图像的局部均值与局部标准差的图
//函数名称:getVarianceMean
//函数参数:Mat &scr:输入图像,为单通道;
//函数参数:Mat &meansDst:计算得到的均值的图,均值的值与输入图像中的点一一对应,为单通道;
//函数参数:Mat &varianceDst:计算得到的标准差的图,标准差的值与输入图像中的点一一对应,为单通道;
//函数参数:int winSize:局部均值的窗口大小,应为单数;
//返回类型:bool
//--------------------

bool getVarianceMean(Mat &scr Mat &meansDst Mat &varianceDst int winSize)
{
if (!scr.data)  //判断图像是否被正确读取;
{
cerr << “获取方差与均值的函数读入图片有误“;
return false;
}

if (winSize % 2 == 0)
{
cerr << “计算局部均值与标准差的窗口大小应该为单数“;
return false;
}

Mat copyBorder_yChannels;                        //扩充图像边界;
int copyBorderSize = (winSize - 1) / 2;
copyMakeBorder(scr copyBorder_yChannels copyBorderSize copyBorderSize copyBorderSize copyBorderSize BORDER_REFLECT);

for (int i = (winSize - 1) / 2; i < copyBorder_yChannels.rows - (winSize - 1) / 2; i++)
{
for (int j = (winSize - 1) / 2; j < copyBorder_yChannels.cols - (winSize - 1) / 2; j++)
{

Mat temp = copyBorder_yChannels(Rect(j - (winSize - 1) / 2 i - (winSize - 1) / 2 winSize winSize));   //截取扩展后的图像中的一个方块;

Scalar  mean;
Scalar  dev;
meanStdDev(temp mean dev);

varianceDst.at(i - (winSize - 1) / 2 j - (winSize - 1) / 2) = dev.val[0];     ///一一对应赋值;
meansDst.at(i - (winSize - 1) / 2 j - (winSize - 1) / 2) = mean.val[0];
}
}


return true;
}

//--------------------------
//函数功能:获取图像的局部均值与局部标准差的图
//函数名称:adaptContrastEnhancement
//函数参数:Mat &scr:输入图像,为三通道RGB图像;
//函数参数:Mat &dst:增强后的输出图像,为三通道RGB图像;
//函数参数:int winSize:局部均值的窗口大小,应为单数;
//函数参数:int maxCg:增强幅度的上限;
//返回类型:bool
//--------------------

bool adaptContrastEnhancement(Mat &scr Mat &dst int

评论

共有 条评论