使用matlab读出一幅灰度图像,得到图像的直方图,根据直方图选取阈值对图像进行阈值分割。再用大津法对图像进行阈值分割。将分割出的目标用原来的彩色显示。
时间: 2024-05-04 21:20:54 浏览: 108
以下是使用Matlab实现读取灰度图像、计算直方图、阈值分割和彩色显示的代码。其中使用了imhist、imread、im2bw和ind2rgb等Matlab自带函数。代码中注释对应的是代码执行的步骤:
```matlab
% 读取灰度图像
I_gray = imread('lena_gray.jpg');
% 显示灰度图像
figure();
imshow(I_gray);
title('灰度图像');
% 计算灰度图像的直方图
figure();
imhist(I_gray);
title('灰度图像直方图');
% 根据直方图选取阈值进行阈值分割
thresh = 100; % 选取阈值
I_bw = im2bw(I_gray, thresh/255); % 阈值分割
% 显示二值化图像
figure();
imshow(I_bw);
title(['阈值分割二值化图像(阈值:', num2str(thresh), ')']);
% 使用大津法进行阈值分割
level = graythresh(I_gray);
I_bw2 = im2bw(I_gray, level); % 阈值分割
% 显示二值化图像
figure();
imshow(I_bw2);
title(['大津法阈值分割二值化图像(阈值:', num2str(level), ')']);
% 将分割出的目标用原来的彩色显示
I_rgb = imread('lena_color.jpg');
I_color = ind2rgb(I_bw, I_rgb); % 彩色显示
% 显示彩色图像
figure();
imshow(I_color);
title('阈值分割彩色图像');
I_color2 = ind2rgb(I_bw2, I_rgb); % 彩色显示
% 显示彩色图像
figure();
imshow(I_color2);
title('大津法阈值分割彩色图像');
```
执行以上代码后,会分别弹出五个图像窗口,分别是原始灰度图像、灰度图像直方图、阈值分割二值化图像、大津法阈值分割二值化图像和阈值分割彩色图像/大津法阈值分割彩色图像。
阅读全文