直方图均衡化 c++
时间: 2023-11-18 17:51:45 浏览: 39
直方图均衡化是一种用于增强图像对比度的技术,它可以使得原始图像的像素灰度值在整个灰度级别范围内更加均衡地分布。直方图均衡化的实现过程如下:
1. 计算原始图像的灰度直方图,即统计每个灰度级别对应的像素数量。
2. 计算灰度级别概率分布函数(PDF),即将每个灰度级别对应的像素数量除以总像素数量。
3. 计算累积分布函数(CDF),即将PDF进行累加,得到每个灰度级别对应的像素累积概率。
4. 根据CDF对原始图像进行变换,使得每个像素的灰度值都变为对应的CDF值乘以最大灰度级别。
5. 得到均衡化后的图像。
下面是一个简单的实现:
```c
void histogram_equalization(unsigned char *image, int width, int height) {
int i, j, k;
int hist[256] = { 0 };
double pdf[256];
double cdf[256];
int output[256];
int num_pixels = width * height;
unsigned char *ptr = image;
// 计算直方图
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
hist[*ptr++]++;
}
}
// 计算PDF和CDF
for (i = 0; i < 256; i++) {
pdf[i] = (double) hist[i] / num_pixels;
if (i == 0) {
cdf[i] = pdf[i];
} else {
cdf[i] = cdf[i-1] + pdf[i];
}
}
// 均衡化
for (i = 0; i < 256; i++) {
output[i] = (int) (255 * cdf[i] + 0.5);
}
// 输出结果
ptr = image;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
*ptr++ = output[*image++];
}
}
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)