概述
1.rectangle函数功能:创建二维矩形对象。
rectangle函数可以用来画矩形、椭圆、圆,画椭圆和圆时需要设置曲率。
rectangle('Position',[x,y,w,h])
从点(x,y)开始绘制一个宽w高h的矩形,对坐标轴数据单元指定值。
rectangle(...,'Curvature',[x,y])指定矩阵边的曲率,可以使它从矩形到椭圆不同变化,水平曲率x为矩形宽度的分数,是沿着矩形的顶部和底部的边进行弯曲。竖直曲率y为矩形高度的分数,是沿着矩形的左面和右面的边进行弯曲。x和y取值范围是从0(无曲率)到1(最大曲率)。值[0,0]绘制一个成直角的矩形,值[x,y]绘制一个椭圆。如果仅仅指定曲率的一个值,那么在水平曲率和竖直曲率都有相同的值。例:
rectangle('position',[1,1,5,5],'curvature',[1,1],'edgecolor','r','facecolor','g');
'position',[1,1,5,5]表示从(1,1)点开始高为5,宽为5;
'curvature',[1,1]表示x,y方向上的曲率都为1,即是圆弧;
'edgecolor','r'表示边框颜色是红色;
'facecolor','g'表示面内填充颜色为绿色。
2.矩形的坐标长宽获取
画矩形需要知道矩形左上角的坐标以及矩形长宽。
在图像中,我们通常想要画一个包围目标的最小矩形,把目标圈出来,此时,可以用到另一个函数:regionprops。
它的用途是get the properties of region,即用来度量图像区域属性的函数。 语法STATS = regionprops ( L , properties ) 描述测量标注矩阵L中每一个标注区域的一系列属性。
L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。
返回值STATS是一个长度为max(L(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。
properties 取值:
- 'basic',则属性: 'Area', 'Centroid', 和 'BoundingBox' 将被计算。
- 'Area'是标量,计算所标记区域的像素总个数,也可以认为是标记区域的面积。- 'Centroid'是区域的重心。
- 'BoundingBox'是包含区域的最小矩形,该区域应在最小矩形内部。
注意:如果只写STATS = regionprops ( L),则相当于’basic‘,则属性: 'Area', 'Centroid', 和 'BoundingBox' 将被计算,之后可以通过STATS.Area、STATS.BoundingBox 、STATS.Centriod获取计算得到的数据。
使用这个函数获取矩形参数时,目标区域必须是连通的,可以通过腐蚀膨胀、开运算闭运算等形态学操作,去除一些噪点以及把需要包围的区域连通起来。
画出矩形:
方法一:
例如,一张二值图像,先通过形态学操作把多个目标区域连通(如已经连通则可省略),之后使用bwlable函数给每个区域贴上标签,则可计算出有多少个连通区域:
[Lbw4, numbw4] = bwlabel(bw4);%把每个单词(此时已连通)贴上标签
%Lbw4为贴标签之后的矩阵,numbw4为标签(即单词)个数
stats = regionprops(Lbw4);%获取区域的某个属性(面积、最小包围矩形的坐标长宽等)的值
imshow(bw);hold on;
for i = 1 : numbw4
tempBound = stats(i).BoundingBox;
rectangle('position',tempBound,'edgecolor','r');
end
显示图像及矩形框结果:
方法二:也可以通过cat(dim,A,B)函数把所有的矩形坐标长宽数组合成一个n*4的矩阵:
rects = cat(1, img_reg.BoundingBox); %每个BoundingBox存放一个矩形,1代表使用数组合成的维数
%也即第二个矩形放在第一个矩形下面组成矩阵
显示图像及矩形框:
% show all the largest connected region
figure(1),
imshow(bw_img);
for i = 1:size(rects, 1) %通过size函数计算连通域个数
rectangle('position', rects(i, :), 'EdgeColor', 'r');
end
总结:第一种方法通过贴标签的形式获取连通区域个数,第二种则通过合并数组的方式,再通过size函数获取连通区域个数。
最后
以上就是老迟到芹菜为你收集整理的Matlab如何在图上画包围目标区域的矩形(或圆)1.rectangle函数功能:创建二维矩形对象。2.矩形的坐标长宽获取的全部内容,希望文章能够帮你解决Matlab如何在图上画包围目标区域的矩形(或圆)1.rectangle函数功能:创建二维矩形对象。2.矩形的坐标长宽获取所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复