用MATLAB表示灰度直方图的灰度线性变换
时间: 2024-12-15 22:16:35 浏览: 14
基于matlab图像灰度值的线性变换
5星 · 资源好评率100%
在MATLAB中,灰度直方图(Histogram of Grayscale)是一种描述图像亮度分布的重要工具。如果需要对灰度图像进行灰度线性变换,通常是为了调整图像对比度、均衡化或进行数据归一化等操作。灰度线性变换可以使用`imadjust`函数或者手动计算转换系数。
以下是基本步骤:
1. **读取图像**:
```matlab
img = imread('your_image_file.jpg'); % 替换为你要处理的图片文件名
```
2. **获取原直方图**:
```matlab
hist = imhist(img(:)); % 将图像矩阵展平,得到灰度值向量并计算直方图
```
3. **定义变换范围**(例如,将原像素值映射到0-255范围内):
```matlab
newMin = 0; % 新的最小灰度值
newMax = 255; % 新的最大灰度值
oldRange = max(img(:)) - min(img(:));
```
4. **计算线性变换系数**:
```matlab
linearScale = (newMax - newMin) / oldRange;
offset = newMin - linearScale * min(img(:));
```
5. **应用变换**:
```matlab
transformedImg = round(linearScale * img(:) + offset);
```
`round`函数用于将像素值转换回整数,因为`imadjust`会直接改变图像内容。
6. **显示原图和变换后的直方图**:
```matlab
figure; subplot(1,2,1); imshow(uint8(img), []);
subplot(1,2,2); histogram(transformedImg, 'Normalization', 'probability');
```
7. **保存新图像**:
```matlab
imwrite(uint8(transformedImg), 'transformed_image.jpg');
```
阅读全文