/// <summary>
/// 均衡化灰度拉伸
/// </summary>
/// <param name="lpdst">输出图像数据</param>
/// <param name="lpsrc">输入图像数据</param>
/// <param name="width">图像宽度</param>
/// <param name="height">图像高度</param>
void equalize_gray(unsigned char *lpdst, const unsigned char *lpsrc, int width, int height)
{
RLIB_RENAME(width, width_x_height);
width_x_height *= height;
int k = 0;
int counts[256] = { 0 };
// 保存灰度值个数
for (; k < width_x_height; ++k) {
++counts[lpsrc[k * 4]];
}
// 灰度映射表
unsigned char gray_map[256];
double calc_result = 255.0f / width_x_height;
gray_map[0] = static_cast<unsigned char>(counts[0] * calc_result);
int m;
int temp;
RLIB_RENAME(height, temp_2);
for (k = 1; k < RLIB_COUNTOF(gray_map); ++k) {
for (m = 0, temp = 0, temp_2 = 0; m <= k; m += 2)
数字图像处理均衡化灰度拉伸C++实现
最新推荐文章于 2021-05-23 07:36:19 发布
这段代码展示了如何使用C++实现数字图像处理中的均衡化灰度拉伸,通过对输入图像数据的灰度值进行统计,并创建灰度映射表,将每个灰度值映射到新的值,以达到调整图像亮度和对比度的效果。
摘要由CSDN通过智能技术生成