matlab图像直方图
时间: 2023-10-16 07:19:54 浏览: 51
在Matlab中,可以使用`imhist`函数来绘制图像的直方图。
以下是一个示例:
```matlab
% 读取图像
img = imread('example.jpg');
% 将图像转换为灰度图像
img_gray = rgb2gray(img);
% 绘制灰度图像的直方图
figure;
imhist(img_gray);
title('灰度图像直方图');
```
其中,`imread`函数用于读取图像,`rgb2gray`函数用于将图像转换为灰度图像,`imhist`函数用于绘制图像的直方图。最后,使用`title`函数添加图像标题。
执行以上代码,将绘制出灰度图像的直方图。
相关问题
matlab 图像直方图
直方图是一种图形化表示方式,用于显示图像中像素强度值的分布情况。在MATLAB中,可以使用imhist函数来计算和绘制图像的直方图。该函数的参数包括输入图像和“容器”数目,即将灰度级分成的份数。默认情况下,imhist函数返回直方图数据的向量,如果想要绘制直方细杆图,则需要使用imhist(f,b)这种形式。
以下是MATLAB中绘制直方图的几种常见方法示例代码:
方法一:
```matlab
img = imread('e.jpg');
imshow(img) % 展示原始图像
figure; % 创建新的图形窗口
imhist(img); % 绘制直方细杆图
```
方法二:
```matlab
img = imread('e.jpg');
figure; % 创建新的图形窗口
subplot(121);
imhist(img); % 绘制细杆状图
subplot(122);
imhist(img, 50); % 绘制直方图
```
方法三:
```matlab
img = imread('e.jpg');
h = imhist(img, 20); % 将0-255的灰度值分成20份
horz = linspace(0, 255, 20);
figure;
bar(horz, h); % 绘制杆状图
```
方法四:
```matlab
img = imread('e.jpg');
h = imhist(img, 20); % 将0-255的灰度值分成20份
horz = linspace(0, 255, 20);
figure;
stem(horz, h, 'fill'); % 绘制折线图
```
方法五:
```matlab
img = imread('e.jpg');
h = imhist(img, 20); % 将0-255的灰度值分成20份
horz = linspace(0, 255, 20);
figure;
plot(horz, h, 'b-o'); % 绘制线图
```
希望以上方法能帮助到你。如有其他问题,请继续提问。
matlab图像直方图均衡化
Matlab中实现图像直方图均衡化的步骤如下:
1. 读取图像并转换为灰度图像。
2. 计算图像的直方图。
3. 计算直方图的累积分布函数(CDF)。
4. 根据CDF对图像进行变换,使得直方图均衡化。
5. 显示处理后的图像。
下面是Matlab代码实现:
```matlab
% 读取图像并转换为灰度图像
img = imread('lena.jpg');
gray_img = rgb2gray(img);
% 计算直方图
hist = imhist(gray_img);
% 计算CDF
cdf = cumsum(hist) / numel(gray_img);
% 根据CDF对图像进行变换
eq_img = uint8(255 * cdf(double(gray_img)+1));
% 显示处理后的图像
subplot(1,2,1), imshow(gray_img), title('原始图像');
subplot(1,2,2), imshow(eq_img), title('直方图均衡化后的图像');
```
在上面的代码中,我们使用了Matlab中的`imread`函数读取图像,`rgb2gray`函数将彩色图像转换为灰度图像,`imhist`函数计算图像的直方图,`cumsum`函数计算直方图的累积分布函数(CDF),`uint8`函数将数据类型转换为无符号8位整数,`subplot`函数将多个图像显示在同一窗口中。