matlab读取一张彩色图像,转换为灰度图,绘制灰度直方图并基于直方图分布选取要个灰度值作为阈值进行简单阈值分割,显示上述结果。代码
时间: 2024-11-03 12:12:56 浏览: 86
在MATLAB中,你可以使用以下步骤完成这个任务:
1. **读取彩色图像**:
```matlab
img = imread('example.jpg'); % 替换 'example.jpg' 为你的图片文件名
```
2. **转换为灰度图**:
```matlab
gray_img = rgb2gray(img);
```
3. **绘制灰度直方图**:
```matlab
hist_gray = imhist(gray_img, 0:256); % 统计每个灰度级别的像素数
bar(hist_gray) % 绘制直方图
xlabel('灰度级');
ylabel('频率');
title('灰度直方图');
```
4. **选择阈值**:
- 一种常见方法是选择直方图上特定百分比处的灰度值作为阈值,例如50%处(中位数阈值):
```matlab
threshold = median(hist_gray(2:end)); % 去掉第一个元素(表示零)
```
- 或者手动选择一个你觉得合适的灰度值。
5. **简单阈值分割**:
```matlab
binary_img = imbinarize(gray_img, threshold);
```
6. **显示原图和分割后的图像**:
```matlab
figure;
subplot(1, 2, 1), imshow(img), title('Original Image');
subplot(1, 2, 2), imshow(binary_img, 'InitialMagnification', 'fit'), title(['Thresholded Image (Threshold = ' num2str(threshold) ')']);
```
阅读全文