% 读取图像img = imread('lena.jpg');% 转换为灰度图像grayImg = rgb2gray(img);% 直方图均衡化eqImg = histeq(grayImg);% 显示原始图像和均衡化后的图像subplot(1,2,1);imshow(grayImg);title('原始图像');subplot(1,2,2);imshow(eqImg);title('均衡化后的图像');
时间: 2024-04-04 11:31:28 浏览: 34
这段代码是对一张名为"lena.jpg"的彩色图像进行处理,将其转换为灰度图像,然后进行直方图均衡化,最后将原始图像和均衡化后的图像显示在同一窗口中。
具体解释如下:
1. imread('lena.jpg'):使用imread函数读取名为"lena.jpg"的彩色图像,该函数返回一个二维或三维矩阵,表示图像的像素值。
2. rgb2gray(img):使用rgb2gray函数将彩色图像转换为灰度图像,该函数将三维矩阵转换为二维矩阵,即每个像素只有一个灰度值。
3. histeq(grayImg):使用histeq函数对灰度图像进行直方图均衡化,该函数将输入图像的灰度值分布均匀化,使得输出图像的灰度值范围更广,从而提高图像的对比度。
4. subplot(1,2,1):使用subplot函数在同一窗口中创建一个1行2列的子图,并将第一个子图设为当前子图。
5. imshow(grayImg):使用imshow函数显示灰度图像grayImg。
6. title('原始图像'):使用title函数为图像添加标题"原始图像"。
7. subplot(1,2,2):使用subplot函数将当前子图切换到第二个子图。
8. imshow(eqImg):使用imshow函数显示直方图均衡化后的图像eqImg。
9. title('均衡化后的图像'):使用title函数为图像添加标题"均衡化后的图像"。
相关问题
请用Matlab写一个图像灰度变换程序,结果包括灰度直方图和均衡化后的灰度直方图
以下是使用Matlab编写的图像灰度变换程序,其中包括灰度直方图和均衡化后的灰度直方图:
```matlab
% 读取图像
img = imread('lena.png');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 计算灰度直方图
histogram = imhist(gray_img);
% 计算累积概率分布函数
cdf = cumsum(histogram) / numel(gray_img);
% 计算灰度均衡化后的图像
eq_img = uint8(255 * cdf(double(gray_img) + 1));
% 计算灰度均衡化后的灰度直方图
eq_histogram = imhist(eq_img);
% 显示图像和灰度直方图
subplot(2,2,1), imshow(gray_img), title('原始图像');
subplot(2,2,2), bar(histogram), title('原始图像灰度直方图');
subplot(2,2,3), imshow(eq_img), title('均衡化后的图像');
subplot(2,2,4), bar(eq_histogram), title('均衡化后的灰度直方图');
```
这个程序读取名为“lena.png”的图像,将其转换为灰度图像,并计算其灰度直方图。然后,它计算累积概率分布函数,并将其用于灰度均衡化,生成均衡化后的图像和灰度直方图。最后,程序将原始图像、原始图像的灰度直方图、均衡化后的图像和均衡化后的灰度直方图显示在一个4个子图的窗口中。
注意,程序中使用的“imhist”函数可以计算图像的灰度直方图,“cumsum”函数可以计算累积概率分布函数。
通过直方图均衡化提升图像的对比度,画出对应的灰度映射函数matlab代码
以下是使用MATLAB实现直方图均衡化的代码:
```matlab
% 读取图像
img = imread('lena.png');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 计算灰度直方图
histogram = imhist(gray_img);
% 计算累计分布函数
cdf = cumsum(histogram) / numel(gray_img);
% 计算灰度映射函数
gray_map = uint8(255 * cdf);
% 对图像进行直方图均衡化
equalized_img = gray_map(gray_img + 1);
% 显示原始图像和直方图均衡化后的图像
subplot(1,2,1);
imshow(gray_img);
title('Original Image');
subplot(1,2,2);
imshow(equalized_img);
title('Equalized Image');
% 显示灰度映射函数
figure;
plot(gray_map);
title('Gray Level Mapping Function');
```
在上面的代码中,我们首先读取图像并将其转换为灰度图像。然后,我们计算灰度直方图并计算累计分布函数。接下来,我们计算灰度映射函数,并使用该函数对图像进行直方图均衡化。最后,我们显示原始图像和直方图均衡化后的图像,并显示灰度映射函数。