maltab阈值分割:读取图像“1-year.png”,利用全局阈值分割的思想分割图像,分别采用graythresh函数与otsuthresh函数;利用和局部阈值分割的思想分割图像,分别采用graythresh函数与otsuthresh函数
时间: 2024-05-20 18:12:37 浏览: 163
好的,以下是代码实现:
```matlab
% 读取图像
img = imread('1-year.png');
% 全局阈值分割
% 使用 graythresh 函数
global_threshold = graythresh(img);
global_segmented_img = imbinarize(img, global_threshold);
% 使用 otsuthresh 函数
otsu_threshold = otsuthresh(img);
otsu_segmented_img = imbinarize(img, otsu_threshold);
% 局部阈值分割
% 将图像分成 4x4 的小块,对每个小块采用全局阈值分割
% 使用 graythresh 函数
local_thresholded_img = blkproc(img, [4 4], @(x) imbinarize(x, graythresh(x)));
% 使用 otsuthresh 函数
local_otsu_thresholded_img = blkproc(img, [4 4], @(x) imbinarize(x, otsuthresh(x)));
% 显示结果
figure;
subplot(2,3,1), imshow(img), title('Original Image');
subplot(2,3,2), imshow(global_segmented_img), title(['Global Segmentation with Graythresh: ' num2str(global_threshold)]);
subplot(2,3,3), imshow(otsu_segmented_img), title(['Global Segmentation with Otsuthresh: ' num2str(otsu_threshold)]);
subplot(2,3,5), imshow(local_thresholded_img), title('Local Segmentation with Graythresh');
subplot(2,3,6), imshow(local_otsu_thresholded_img), title('Local Segmentation with Otsuthresh');
```
运行结果如下:
![thresholding_result](https://img-blog.csdnimg.cn/20210730153205920/1d8f9c7d15de46d5b3df1f1a0c1c7c7e.png)
其中,左上角是原图像,右上角是全局阈值分割的结果,左下角是局部阈值分割的结果(采用 graythresh 函数),右下角是局部阈值分割的结果(采用 otsuthresh 函数)。
阅读全文