www.gusucode.com > 《matlab图像处理与界面编程宝典》秦襄培 编著,每章的MATLAB源代码程序 > 第2章/第2.7.2节中的代码.txt
I = ipexpropsSynthesizeImage; imshow(I) title('Synthetic Image') % BW = I > 0; L = bwlabel(BW); imshow(label2rgb(L)) title('Label Matrix') % s = regionprops(L, I, {'Centroid','WeightedCentroid'}); imshow(I) % 显示图像 title(sprintf('Weighted Centroid (red) and %s', ... % 设定标题 'Unweighted Centroid Locations (blue)')); hold on % 继续绘制图像 numObj = numel(s); % 目标对象数目 for k = 1 : numObj % 通过循环对每个目标对象进行标记 plot(s(k).WeightedCentroid(1), s(k).WeightedCentroid(2), 'r*'); plot(s(k).Centroid(1), s(k).Centroid(2), 'bo'); end hold off % 结束绘制 s = regionprops(L, I, {'Centroid','PixelValues','BoundingBox'}); % 图像区域属性 imshow(I); % 显示图像 title('Standard Deviation of Regions'); % 设定标题 hold on % 继续绘制图像 for k = 1 : numObj % 通过循环计算每个区域的标准偏差 s(k).StandardDeviation = std(double(s(k).PixelValues)); text(s(k).Centroid(1),s(k).Centroid(2), ... sprintf('%2.1f', s(k).StandardDeviation), ... 'EdgeColor','b','Color','g'); end hold off % 结束绘制 figure % 创建新的图形窗口 bar(1:numObj,[s.StandardDeviation]); % 条形图绘制 xlabel('Region Label Number'); % x轴标签 ylabel('Standard Deviation'); % y轴标签 sStd = [s.StandardDeviation]; lowStd = find(sStd < 50); % find函数在这里使用逻辑表达式确定数据,这里是找到数组sStd中小于50的元素,放入新数组。 imshow(I); title('Objects Having Standard Deviation < 50'); hold on; for k = 1 : length(lowStd) %设置循环次数为数组lowStd的元素的个数 rectangle('Position', s(lowStd(k)).BoundingBox, ...% ...用于程序代码转行 'EdgeColor','y'); end hold off;