% 读入图像 img = imread('eight.tif'); % 全局阈值分割 threshold = graythresh(img); img_segmented = imbinarize(img, threshold); % 显示分割结果 subplot(2, 2, 1);imshow(img);title('Original Image'); subplot(2, 2, 2);imshow(img_segmented);title('Segmented Image'); % 利用膨胀算法完成硬币的整体分割 se = strel('disk', 20); img_dilated = imdilate(img_segmented, se); % 显示膨胀后的结果 subplot(2, 2, 3);imshow(img_dilated);title('Dilated Image'); % 利用腐蚀算法消除错分现象 se = strel('disk', 10); img_eroded = imerode(img_dilated, se); % 显示最终结果 subplot(2, 2, 4);imshow(img_eroded);title('Final Segmented Image');matlab代码运行后显示不出图三'Dilated Image'和图四'Final Segmented Image'怎么解决?
时间: 2024-02-19 20:57:35 浏览: 69
ibillxia-img.zip_matlab图像 处理 阈值_matlab读取img_yzfg程序是什么_灰度图像分割_画直方
这段 MATLAB 代码的问题在于,子图数量设置不够,导致第三个子图和第四个子图无法显示。你需要将 `subplot` 函数的第一个参数修改为 `2`,以便在两行中各创建两个子图,同时将第三个子图和第四个子图的位置修改为 `3` 和 `4`,代码如下:
```matlab
% 读入图像
img = imread('eight.tif');
% 全局阈值分割
threshold = graythresh(img);
img_segmented = imbinarize(img, threshold);
% 显示分割结果
subplot(2, 2, 1);
imshow(img);
title('Original Image');
subplot(2, 2, 2);
imshow(img_segmented);
title('Segmented Image');
% 利用膨胀算法完成硬币的整体分割
se = strel('disk', 20);
img_dilated = imdilate(img_segmented, se);
% 显示膨胀后的结果
subplot(2, 2, 3);
imshow(img_dilated);
title('Dilated Image');
% 利用腐蚀算法消除错分现象
se = strel('disk', 10);
img_eroded = imerode(img_dilated, se);
% 显示最终结果
subplot(2, 2, 4);
imshow(img_eroded);
title('Final Segmented Image');
```
通过修改子图数量和位置,这段代码将所有图像都显示出来了。
阅读全文