用MATLAB将直方图进行归一化,变换不同的灰度级数,得到三种结果
时间: 2024-10-18 20:08:20 浏览: 11
在MATLAB中,对直方图进行归一化通常是为了对比不同尺度的数据。以下是针对灰度图像直方图进行三种常见归一化操作的步骤:
1. **最大值归一化 (Min-Max Normalization)**: 将所有像素值缩放到0到1之间。对于直方图`histData`,可以这样操作:
```matlab
minVal = min(histData(:)); % 找到最小值
maxVal = max(histData(:)); % 找到最大值
normalizedHist = ((histData - minVal) / (maxVal - minVal))';
```
2. **标准化 (Z-Score Normalization)**: 将直方图转化为标准正态分布,即均值为0,标准差为1。先计算平均值和标准差:
```matlab
meanHist = mean(histData(:));
stdDevHist = std(histData(:));
standardizedHist = (histData - meanHist) / stdDevHist;
```
3. **概率密度直方图 (Probability Density Function, PDF)**: 如果你想得到每个像素值发生的概率,而不是频率,可以使用累积分布函数(CDF)并除以总像素数。假设`totalPixels = numel(img)`:
```matlab
cdfHist = cumsum(histData);
pdfHist = cdfHist ./ totalPixels;
```
展示这三种归一化后的直方图,可以分别创建一个新的图形窗口,然后用`plot`函数分别绘制:
```matlab
figure;
subplot(1, 3, 1), plot(normalizedHist), title('Max-Min Normalized');
subplot(1, 3, 2), plot(standardizedHist), title('Z-Score Normalized');
subplot(1, 3, 3), plot(pdfHist), title('PDF (Probabilistic)');
```
阅读全文