C++实现直方图均衡,附源代码

更新时间:2023-07-20 18:28:28 阅读: 评论:0

C++实现直⽅图均衡,附源代码⽬录
接⼝设计
//直⽅图均衡化函数定义7个月宝宝辅食
国债逆回购如何操作static BOOL histeq(CImageDatat &imgIn, CImageDatat &imgOut);
运⾏结果
源代码
//计算直⽅图函数
void CImageProcessingEx::getHist(const CImageDatat& img,int band,std::vector<int>& hist)
{
int value;
牛肉煎包int N_row = img.m_ysize;
int N_col = img.m_xsize;
const double* imgData = img.m_data;
for(int row=0; row<N_row;++row)//对图像逐⾏逐列进⾏扫描,计算完成直⽅图
{
for(int col=0; col<N_col;++col)
{
int index = band * N_row * N_col + row * N_col + col;
value=(UINT8)imgData[index];
hist[value]++;
}
}
}
//直⽅图均衡
BOOL CImageProcessingEx::histeq(CImageDatat &imgIn, CImageDatat &imgOut)
梯形是四边形吗{
const int LEVEL =256;//灰度值级数
int k, row, col;//⽤于循环
int k, row, col;//⽤于循环
//double hist[LEVEL], accuHist[LEVEL]; //直⽅图和累积直⽅图
std::vector<int>hist(LEVEL);
非化脓性中耳炎std::vector<double>accuHist(LEVEL);
山东财经大学排名
/* 确保输⼊图像⾮空 */
pty())
{
return FALSE;
蛋糕的做法大全
}
//记录输⼊图像的尺⼨
init(imgIn);
/*创建输⼊图像*/
if(FALSE == ate(n_col,n_row,n_band))
{
return FALSE;
}
//输⼊和输出图像的数据区指针
const double*input_data=imgIn.m_data;
double*output_data = imgOut.m_data;
int img_area = n_col * n_row;//⾯积,即单个波段的像素个数
for(int band =0; band < n_band; band++)
{/*  步骤 1:计算输⼊图像的直⽅图  */
getHist(imgIn, band,hist);
/*  步骤 2:计算累积直⽅图  */
accuHist[0]= hist[0]/ img_area;
for(k =1; k < LEVEL -1; k++)//对直⽅图索引进⾏扫描,计算完成累积直⽅图
{
accuHist[k]= accuHist[k -1]+double(hist[k])/ img_area;
}
accuHist[255]=1;
/*  步骤 3:根据⽤累积直⽅图建⽴灰度变换函数,并逐⾏逐列进⾏像素的灰度变换 */ int index, gray_value;
for(row =0; row < n_row;++row)
{
for(col =0; col < n_col;++col)
{
index =coo2ind(band,row,col);
gray_value =(int)input_data[index];
output_data[index]=(LEVEL -1)* accuHist[gray_value];//灰度变换
}
}
}
准是什么结构的字
return TRUE;
}

本文发布于:2023-07-20 18:28:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1107368.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   计算   扫描   完成   像素
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图