MATLAB怎么得到一张灰度图像的直方图并显示
时间: 2024-10-18 10:07:59 浏览: 39
在MATLAB中,你可以通过以下步骤获取一张灰度图像的直方图并显示:
1. 首先,读取灰度图像。假设你有一个名为`image grayscale.jpg`的图像文件,可以使用`imread`函数读取:
```matlab
img = imread('grayscale.jpg');
```
2. 确保图像为灰度图像,如果不是,可以使用`rgb2gray`函数将其转换为灰度:
```matlab
if size(img, 3) == 3
img = rgb2gray(img);
end
```
3. 使用`imhist`函数计算图像的直方图。这个函数会返回直方图的数据和对应的像素值范围:
```matlab
histData = imhist(img);
```
4. 最后,使用`imagesc`或`bar`函数将直方图可视化出来。这里我们使用`bar`函数:
```matlab
bar(histData(:, 1), histData(:, 2));
xlabel('灰度值');
ylabel('频率');
title('灰度图像直方图');
```
如果你想显示直方图的累计分布,可以添加`cumsum`函数:
```matlab
cdf = cumsum(histData(:, 2)) / sum(histData(:, 2));
plot(histData(:, 1), cdf, 'r', '-o');
```
完整的示例:
```matlab
img = imread('grayscale.jpg');
if size(img, 3) == 3
img = rgb2gray(img);
end
histData = imhist(img);
bar(histData(:, 1), histData(:, 2));
xlabel('灰度值');
ylabel('频率');
title('灰度图像直方图');
cdf = cumsum(histData(:, 2)) / sum(histData(:, 2));
plot(histData(:, 1), cdf, 'r', '-o');
```
阅读全文