matlab 累积直方图
时间: 2023-10-20 07:35:18 浏览: 226
累积直方图是指对于一个图像的灰度直方图,将每个灰度级别处的像素数与前面所有灰度级别处的像素数进行累加得到的图像统计信息。通过累积直方图,我们可以了解图像中不同灰度级别的像素在整个图像中的分布情况。
在MATLAB中,可以使用以下代码计算图像的累积直方图:
```matlab
function[CumulativeHist = CumulativeHistogram(image)
[row, column = size(image);
Histogram = zeros(1, 256);
CumulativeHist = zeros(1, 256);
for i = 1:row
for j = 1:column
k = image(i, j);
Histogram(k + 1) = Histogram(k + 1) + 1; % 统计每个灰度值的像素数
end
end
CumulativeHist(1) = Histogram(1);
for i = 2:256
CumulativeHist(i) = CumulativeHist(i - 1) + Histogram(i); % 计算累积直方图
end
end
```
上述代码中,输入为灰度图像,输出为累积直方图。首先,我们创建一个大小为256的零向量用于统计灰度级别的像素数。然后,遍历图像的每个像素,将对应灰度级别的像素数加1。接下来,通过累加前面所有的像素数得到累积直方图。
使用`subplot`函数可以在一个图形窗口中同时显示灰度图像、灰度直方图和累积直方图。例如:
```matlab
image = imread('xxx.jpg');
grayImage = rgb2gray(image);
figure;
subplot(1,3,1);
imshow(grayImage);
title('灰度图像');
subplot(1,3,2);
imhist(grayImage);
title('灰度直方图');
subplot(1,3,3);
CumulativeHist = CumulativeHistogram(grayImage);
bar(CumulativeHist);
title('累积直方图');
```
上述代码中,我们首先读入一幅RGB图像,并将其转换为灰度图像。然后,创建一个图形窗口,并使用`subplot`函数将三个图像显示在同一窗口中。在第一个子图中显示灰度图像,在第二个子图中显示灰度直方图,在第三个子图中显示累积直方图。
通过上述方法,我们可以计算和显示MATLAB中图像的累积直方图。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文