||
参考资料:http://blog.csdn.net/shaoxiaohu1/article/details/40272531
测试图片:
代码如下:
>>img = imread('test2.jpg');
>> gray_img = rgb2gray(img);
>> T = graythresh(gray_img);
>> bw_img = im2bw(gray_img, T);
>> img_reg = regionprops(bw_img, 'area', 'boundingbox');
>> areas = [img_reg.Area];
>> rects = cat(1, img_reg.BoundingBox);
>> figure(1)
>> imshow(bw_img);
>> for i = 1:size(rects, 1)
rectangle('position', rects(i, :), 'EdgeColor', 'r');
end
% 以上代码已经可以标记处全部斑块
% 以下代码用于标记最大斑块
>> [~, max_id] = max(areas);
>> max_rect = rects(max_id, :);
>> figure(2),
>> imshow(bw_img);
>> rectangle('position', max_rect, 'EdgeColor', 'r')
这个代码虽然是MATLAB简单的一个图像算法,之所以想把它记下来就是可以联想到很多遥感图像处理方面的应用,先记下来吧,以后绝对用得着
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-19 05:08
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社