Matlab 编程 给定彩色图象 lena . bmp ,转换为灰度图象,进行三段非线性灰度变换,显示结果. 要求:灰度值较低的像素进行幂变换,提高其亮度;中间层级灰度的像素进行对数变换,系数为2
时间: 2023-08-02 19:06:47 浏览: 109
Assignment1.rar_lena_lena.bmp_matlab 抖动_图像抖动_灰度 抖动
以下是 Matlab 代码实现:
```matlab
% 读取彩色图像
img = imread('lena.bmp');
% 转换为灰度图像
gray_img = rgb2gray(img);
% 定义幂变换函数
power_trans = @(x, gamma) 255 * (x / 255) .^ gamma;
% 定义对数变换函数
log_trans = @(x, c) c * log10(1 + double(x));
% 定义灰度级别
low = 80;
mid = 150;
high = 220;
% 对灰度图像进行三段非线性灰度变换
for i = 1:size(gray_img, 1)
for j = 1:size(gray_img, 2)
if gray_img(i, j) < low
gray_img(i, j) = power_trans(gray_img(i, j), 0.5);
elseif gray_img(i, j) < mid
gray_img(i, j) = log_trans(gray_img(i, j), 2);
elseif gray_img(i, j) <= high
gray_img(i, j) = power_trans(gray_img(i, j), 2);
end
end
end
% 显示结果
imshow(gray_img)
```
首先读取彩色图像,然后使用 `rgb2gray` 函数将其转换为灰度图像。接着定义幂变换和对数变换的函数,以及三个灰度级别。然后对灰度图像进行三段非线性灰度变换,根据像素的灰度级别选择不同的变换方式。最后使用 `imshow` 函数显示结果。
阅读全文