利用matlab任意导入一张暗色调的图像,分别通过线性和非线性的方法实现对导入图像的整体亮度提升
时间: 2024-05-14 08:17:17 浏览: 12
好的,我可以帮你解决这个问题。
首先,我们需要导入一张暗色调的图像。可以使用 `imread` 函数实现:
```matlab
img = imread('dark_image.jpg');
```
这里假设图像文件名为 `dark_image.jpg`,并且与 Matlab 脚本文件在同一目录下。
然后,我们可以使用线性方法来提高图像亮度。具体来说,我们可以将图像中的每个像素值乘以一个常数。这个常数可以通过试错法来确定。这里我们假设将图像亮度提高 50%,则常数为 1.5。代码如下:
```matlab
linear_img = img * 1.5;
```
接下来,我们可以使用非线性方法来提高图像亮度。具体来说,我们可以使用 gamma 校正来实现。Gamma 校正将图像中每个像素的亮度值进行非线性的变换,使得图像整体亮度得到提高。代码如下:
```matlab
gamma = 1.5; % gamma 值可以通过试错法来确定
nonlinear_img = imadjust(img, [], [], gamma);
```
这里使用 `imadjust` 函数来实现 gamma 校正。第一个参数是输入图像,第二个参数为空,表示对原始图像的亮度值范围不做任何调整,第三个参数也为空,表示输出图像的亮度值范围也不做任何调整。第四个参数是 gamma 值。
最后,我们可以将三张图像显示出来,进行对比。代码如下:
```matlab
subplot(1, 3, 1), imshow(img), title('Original Image')
subplot(1, 3, 2), imshow(linear_img), title('Linear Adjustment')
subplot(1, 3, 3), imshow(nonlinear_img), title('Nonlinear Adjustment')
```
这里使用 `subplot` 函数将三张图像显示在同一幅图中,方便进行对比。完整代码如下:
```matlab
img = imread('dark_image.jpg');
linear_img = img * 1.5;
gamma = 1.5;
nonlinear_img = imadjust(img, [], [], gamma);
subplot(1, 3, 1), imshow(img), title('Original Image')
subplot(1, 3, 2), imshow(linear_img), title('Linear Adjustment')
subplot(1, 3, 3), imshow(nonlinear_img), title('Nonlinear Adjustment')
```
希望能帮助到你!