【基础】MATLAB图像的光照校正与白平衡调整
发布时间: 2024-05-21 17:32:58 阅读量: 104 订阅数: 213
# 1. **2.1 光照校正的基本原理**
图像光照校正旨在改善图像的亮度和对比度,使其更符合人眼观察的效果。基本原理包括:
* **图像亮度和对比度调整:**通过调整像素值,改变图像的整体亮度和对比度,使其更清晰或更暗。
* **直方图均衡化:**分析图像的直方图分布,并调整像素值,使直方图更加均匀,提高图像的对比度和细节丰富度。
# 2. 图像光照校正理论与实践
### 2.1 光照校正的基本原理
光照校正旨在改善图像的亮度和对比度,使其更适合人眼观察或进一步处理。其基本原理包括:
**2.1.1 图像亮度和对比度调整**
* **亮度调整:**通过调整像素值,改变图像的整体亮度。
* **对比度调整:**通过拉伸或压缩像素值范围,增强或减弱图像中明暗区域的差异。
**2.1.2 直方图均衡化**
直方图均衡化是一种非线性图像增强技术,它通过调整图像的直方图分布,使图像中不同灰度级的像素分布更加均匀,从而改善图像的对比度和亮度。
### 2.2 光照校正的MATLAB实现
#### 2.2.1 常用光照校正函数
MATLAB提供了多种光照校正函数,包括:
* `imadjust`:调整图像的亮度和对比度。
* `histeq`:执行直方图均衡化。
* `adapthisteq`:执行自适应直方图均衡化,根据图像的局部区域调整直方图。
#### 2.2.2 实践案例:图像曝光不足的校正
**代码块:**
```matlab
% 读取曝光不足的图像
image = imread('underexposed.jpg');
% 调整亮度和对比度
adjusted_image = imadjust(image, [0.2, 0.8], []);
% 显示校正后的图像
figure;
subplot(1, 2, 1);
imshow(image);
title('原始图像');
subplot(1, 2, 2);
imshow(adjusted_image);
title('校正后的图像');
```
**逻辑分析:**
* `imread`函数读取图像文件。
* `imadjust`函数调整图像的亮度和对比度。第一个参数指定输入图像的像素值范围,第二个参数指定输出图像的像素值范围。
* `imshow`函数显示图像。
**参数说明:**
* `imadjust`函数:
* `[0.2, 0.8]`:输入图像的像素值范围,表示将像素值映射到[0, 1]的区间。
* `[]`:输出图像的像素值范围,表示保持与输入图像相同的范围。
# 3. 图像白平衡理论与实践
### 3.1 白平衡的基本概念
#### 3.1.1 色温与白点
色温是描述光源颜色特性的物理量,单位为开尔文(K)。色温越高,光源的颜色越偏蓝;色温越低,光源的颜色越偏红。
白点是图像中被认为是白色的像素。白点的色温决定了图像中其他颜色的相对色温。
#### 3.1.2 色彩空间转换
色彩空间是描述颜色的数学模型。不同的色彩空间使用不同的坐标系来表示颜色。
白平衡涉及将图像从一种色彩空间(例如 RGB)转换为另一种色彩空间(例如 XYZ),以便白点具有预期的色温。
### 3.2 白平衡的MATLAB实现
#### 3.2.1 常用白平衡函数
MATLAB 提供了多种白平衡函数,包括:
- `whitebalance`: 根据指定的色温或白点调整图像的白平衡。
- `grayworld`: 使用图像中所有像素的平均值作为白点来调整白平衡。
- `maxrgb`: 使用图像中最大 RGB 值作为白点来调整白平衡。
#### 3.2.2 实践案例:图像色偏的校正
```
% 读取图像
image = imread('color_cast.jpg');
% 调整白平衡(色温为 6500K)
corrected_image = whitebalance(image, 6500);
% 显示原始图像和校正后的图像
figure;
subplot(1, 2, 1);
imshow(image);
title('原始图像');
subplot(1, 2, 2);
imshow(corrected_image);
title('校正后的图像');
```
**代码逻辑分析:**
1. `imread` 函数读取图像文件。
2. `whitebalance` 函数调整图像的白平衡,将色温设置为 6500K。
3. `figure` 函数创建
0
0