用matlab用直方图法获取阈值并对三幅图像进行分割 在1个figure中的左列显示3幅原始图像,中间一列显示各自的直方图,最右一列显示对应的分割结果,并做适当标注
时间: 2024-03-10 13:50:23 浏览: 15
好的,以下是MATLAB代码实现:
```matlab
% 读取三幅图像
cell = imread('cell.png');
circuit = imread('circuit.tif');
lena = imread('lena_gray.bmp');
% 创建figure
figure('Name','图像分割','NumberTitle','off');
% 显示3幅原始图像
subplot(3,3,1);
imshow(cell);
title('cell');
subplot(3,3,4);
imshow(circuit);
title('circuit');
subplot(3,3,7);
imshow(lena);
title('lena');
% 显示3幅图像的直方图
subplot(3,3,2);
imhist(cell);
title('cell 直方图');
subplot(3,3,5);
imhist(circuit);
title('circuit 直方图');
subplot(3,3,8);
imhist(lena);
title('lena 直方图');
% 对cell图像进行分割
level_cell = graythresh(cell);
cell_seg = imbinarize(cell, level_cell);
% 对circuit图像进行分割
level_circuit = graythresh(circuit);
circuit_seg = imbinarize(circuit, level_circuit);
% 对lena图像进行分割
level_lena = graythresh(lena);
lena_seg = imbinarize(lena, level_lena);
% 显示3幅图像的分割结果
subplot(3,3,3);
imshow(cell_seg);
title('cell 分割结果');
subplot(3,3,6);
imshow(circuit_seg);
title('circuit 分割结果');
subplot(3,3,9);
imshow(lena_seg);
title('lena 分割结果');
```
运行代码后,将会弹出一个名为“图像分割”的窗口,其中左列显示三幅原始图像,中间一列显示各自的直方图,最右一列显示对应的分割结果。