matlab 直方图对比
时间: 2023-10-24 07:33:19 浏览: 146
在MATLAB中,可以使用`histc`函数创建直方图并进行对比。以下是一个简单的示例:
```matlab
% 生成两组随机数据
data1 = randn(1, 100);
data2 = randn(1, 100) + 5;
% 创建直方图
hist1 = histc(data1, 'Normalization', 'probability');hist2 = histc(data2, 'Normalization', 'probability');
% 绘制直方图
figure;
subplot(2, 1, 1);
plot(hist1);
title('直方图1');
xlabel('数据范围');
ylabel('频数');
subplot(2, 1, 2);
plot(hist2);
title('直方图2');
xlabel('数据范围');
ylabel('频数');
```
这段代码首先生成了两组随机数据(`data1`和`data2`),然后使用`histc`函数创建了两个直方图(`hist1`和`hist2`)。最后,使用`plot`函数将这两个直方图绘制在同一个图形窗口中进行对比。
相关问题
MATLAB直方图归一化
### MATLAB 直方图归一化的方法与示例
在MATLAB中,直方图归一化是指将图像的像素强度重新分布在一个特定范围内,使得处理后的图像具有更均匀的亮度和对比度。这可以通过调整灰度映射表来实现[^1]。
#### 使用 `imadjust` 函数进行简单线性变换
对于简单的线性拉伸操作,可以利用内置函数 `imadjust` 来完成:
```matlab
I = imread('pout.tif');
J = imadjust(I);
imshowpair(I,J,'montage')
title(['Left: Original Image | Right: Contrast Adjusted']);
```
此段代码读取了一张名为 'pout.tif' 的图片并对其进行了对比度增强,通过比较原图与调整后的效果图可以看出差异[^4]。
#### 自定义归一化算法
如果想要更加精确地控制归一化的程度,则可以根据具体需求编写自定义脚本。下面是一个基于累积概率密度函数(CDF)来进行全局直方图归一化的实例:
```matlab
% 加载图像数据
img = double(imread('cameraman.tif'));
% 计算原始图像的CDF
[counts, centers] = imhist(img);
cdf = cumsum(counts)/numel(img);
% 创建新的灰度级映射关系
new_levels = round((size(cdf,2)-1)*cdf)+min(centers);
% 应用新创建的映射规则至整个图像矩阵
normalized_img = interp1(min(centers):max(centers), new_levels, img(:));
normalized_img = reshape(normalized_img,size(img));
% 显示结果
figure;
subplot(1,2,1); imshow(uint8(img)); title('Original Image');
subplot(1,2,2); imshow(uint8(normalized_img)); title('Normalized Image');
% 绘制两者的直方图以便直观理解变化过程
figure;
subplot(1,2,1); imhist(uint8(img)); title('Original Histogram');
subplot(1,2,2); imhist(uint8(normalized_img)); title('Normalized Histogram');
```
这段程序首先获取了图像文件中的数据,并计算其累计频率分布情况;接着依据该分布构建了一个从旧灰阶到新灰阶的一维插值查找表(LUT),从而实现了对整幅画面的整体重映射;最后分别展示了转换前后的视觉效果及其对应的直方图表征形式。
matlab直方图增强图像
直方图均衡化是一种常用的图像增强方法,可以通过拉伸图像的灰度级分布来增强图像的对比度和亮度。在MATLAB中,可以使用`histeq`函数来实现直方图均衡化。具体步骤如下:
1. 读取彩色图像并转换为灰度图像。
```matlab
img = imread('color_img.jpg');
gray_img = rgb2gray(img);
```
2. 对灰度图像进行直方图均衡化。
```matlab
eq_img = histeq(gray_img);
```
3. 显示原始图像和均衡化后的图像。
```matlab
subplot(1,2,1);
imshow(gray_img);
title('Original Image');
subplot(1,2,2);
imshow(eq_img);
title('Equalized Image');
```
运行上述代码后,将显示原始图像和均衡化后的图像,可以看到均衡化后的图像对比度和亮度都有所提高。
阅读全文
相关推荐
















