c语言线性图像增强源码
时间: 2023-07-28 16:02:40 浏览: 81
线性图像增强是一种常用的图像处理技术,通过调整图像的亮度和对比度,以改善图像的视觉效果。下面是一个使用C语言编写的线性图像增强的简单源码示例:
#include <stdio.h>
#include <stdlib.h>
// 定义图像的宽度和高度
#define WIDTH 128
#define HEIGHT 128
// 定义调整后的亮度和对比度
#define BRIGHTNESS 0.5
#define CONTRAST 2.0
// 线性图像增强函数
void linearEnhancement(unsigned char* image, int width, int height, float brightness, float contrast) {
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
// 获取像素值
unsigned char pixel = image[i * width + j];
// 增加亮度
float newPixel = pixel * brightness;
// 增加对比度
newPixel = (newPixel - 128) * contrast + 128;
// 限制像素值在0-255之间
if (newPixel < 0) {
newPixel = 0;
}
if (newPixel > 255) {
newPixel = 255;
}
// 更新图像像素值
image[i * width + j] = (unsigned char)newPixel;
}
}
}
int main() {
// 创建一个大小为WIDTH * HEIGHT的灰度图像
unsigned char* image = (unsigned char*)malloc(WIDTH * HEIGHT * sizeof(unsigned char));
// 初始化图像像素值
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
image[i * WIDTH + j] = i % 256; // 生成一个从0到255的灰度渐变图像
}
}
// 调用线性图像增强函数
linearEnhancement(image, WIDTH, HEIGHT, BRIGHTNESS, CONTRAST);
// 输出调整后的图像像素值
for (int i = 0; i < HEIGHT; i++) {
for (int j = 0; j < WIDTH; j++) {
printf("%d ", image[i * WIDTH + j]);
}
printf("\n");
}
// 释放内存
free(image);
return 0;
}
这段代码演示了如何通过线性图像增强函数linearEnhancement来调整图像的亮度和对比度。该函数使用两个循环遍历图像的每个像素,然后根据给定的亮度和对比度参数对像素进行处理。最后,该程序输出调整后的图像像素值。