帮助中心帮助中心
对包围框应用几何变换
bboxB = bboxwarp(bboxA,tform,ref)
bboxB = bboxwarp(bboxA,tform,ref,"OverlapThreshold", OverlapThreshold)
[bboxB, indexes] = bboxwarp(___)
例子
bboxB= bboxwarp (bboxA,tform,裁判)中转换边界框bboxA根据定义的几何变换tform.包围框可以是轴对齐的矩形、旋转的矩形或长方体。空间参考对象,裁判,定义框被转换到的输出视图。该函数支持二维和三维包围框。金宝app
bboxB= bboxwarp (bboxA,tform,裁判)
bboxB
bboxA
tform
裁判
bboxB= bboxwarp (bboxA,tform,裁判“OverlapThreshold”,overlapThreshold)还指定正重叠阈值。
bboxB= bboxwarp (bboxA,tform,裁判“OverlapThreshold”,overlapThreshold)
overlapThreshold
[bboxB,指数= bboxwarp(___)另外返回一个索引向量,这些索引指示在哪些边界框中bboxA对应于输出中的扭曲版本,bboxB.您可以指定前面两组输入参数中的任何一组。
[bboxB,指数= bboxwarp(___)
指数
全部折叠
读一张图片。
I = imread(“peppers.png”);
定义边界框和标签。
bboxA = [410 230 100 90 186 78 80 60]
bboxA =2×4410 230 100 90 186 78 80 60
labelsA = [“大蒜”“洋葱”];
定义一个仿射变换来水平翻转和转换图像。
Tform = affinetform2d([-1 0 50;0 1 50;0 0 1]);
为创建输出视图imwarp.
imwarp
rout = affineOutputView(size(I),tform);
扭曲图像。
J = imwarp(I,tform,“OutputView”,溃败);
扭曲盒子。
[bboxB, indexes] = bboxwarp(bboxA,tform,rout);labelsB = labelsA(索引);
显示结果。
注释edi = insertObjectAnnotation(I,“矩形”、bboxA labelsA);注释J =插入tobjectannotation (J,“矩形”、bboxB labelsB);图蒙太奇({annotatedI, annotatedJ})
约束框,指定为米4,米5、米的非稀疏数值矩阵米边界框。每一行,米,将包围框定义为轴对齐矩形、旋转矩形或长方体。包围框的格式如下表所示。
在空间坐标中定义为米-by-4数字矩阵,行形式为[xywh),地点:
米是轴对齐矩形的数量。
x而且y指定矩形的左上角。
y
w指定矩形的宽度,即矩形沿x设在。
h指定矩形的高度,即矩形沿y设在。
在空间坐标中定义为米-by-5数字矩阵,行形式为[xctryctrxlenylen偏航),地点:
米是旋转矩形的个数。
xctr而且yctr指定矩形的中心。
xlen指定矩形的宽度,即矩形沿x-轴旋转前。
ylen指定矩形的高度,即矩形沿y-轴旋转前。
偏航以角度为单位指定旋转角度。围绕包围框中心的旋转是顺时针正的。
在空间坐标中定义为米-by-9的数字矩阵,行形式为[xctryctrzctrxlenylenzlenxrotyrotzrot),地点:
米是长方体的个数。
xctr,yctr,zctr指定长方体的中心。
xlen,ylen,zlen指定长方体沿的长度x设在,y设在,z-轴,分别在旋转前。
xrot,yrot,zrot指定长方体围绕的旋转角度x设在,y设在,z分别设在。的xrot,yrot,zrot旋转角度以围绕长方体中心的角度为单位。每个旋转相对于相关空间轴的正方向是顺时针正的。函数计算旋转矩阵假设ZYX股票阶欧拉角[xrotyrotzrot].
ZYX股票
图中显示了这些值如何决定长方体的位置。
affinetform2d
affinetform3d
几何变换,指定为affinetform2d对象的矩形输入或affinetform3d对象用于长方体输入。bboxwarp函数支持只包含缩放、旋转和平金宝app移的仿射变换。
imref2d
imref3d
空间引用,指定为imref2d对象用于矩形输入或imref3d对象用于长方体输入。要获得这些对象之一,可以使用imwarp或者是affineOutputView函数。对象定义转换框的输出视图。所定义的输出视图之外完全转换的框裁判被丢弃。
affineOutputView
[J,rout] = imwarp(I,tform);[bboxB, indexes] = bboxwarp(bboxA,tform,rout);
rout = affineOutputView(size(I),tform) J = imwarp(I,tform,'OutputView',rout);[bboxB, indexes] = bboxwarp(bboxA,tform,rout);
1
重叠阈值,指定为小于或等于的正标量1.变换后的方框与区域之间的重叠量W,由输出视图定义,定义为:
区域(相交(bboxA,W)) /区域(bboxB,W).
区域
相交
的值阈值属性,则转换后的方框将被剪切到边界矩形边框。否则,包装盒将被丢弃。降低阈值可能会导致部分对象被丢弃。
阈值
扭曲的包围框,返回为平方米——- - - - - -N矩阵的平方米边界框。返回的包围框数量小于输入中的包围框数量。每一行,平方米,定义了一个与输入类型相同的包围框bboxA.当bboxB包含浮点数据,则函数以相同类型返回bboxA.否则,函数返回bboxB类型单.
单
索引,作为整数向量返回。索引表示输入中的边界框,bboxA,对应于输出中的扭曲版本,bboxB.
全部展开
从R2022b开始,大多数计算机视觉工具箱™函数使用预乘法约定创建和执行几何转换。因此,您现在可以指定tform作为一个affinetform2d或affinetform3d几何变换对象,使用前置乘法约定。
尽管你仍然可以指定tform作为一个affine2d或affine3d几何变换对象,不推荐使用这些对象,因为它们使用后乘约定。您可以通过切换到新的预乘法几何转换对象来简化您的几何转换工作流。有关更多信息,请参见将几何变换迁移到前置乘法约定.
affine2d
affine3d
的bboxresize,bboxcrop,bboxwarp,showShape函数假设轴向矩形的输入包围框坐标在空间坐标中指定,并以空间坐标返回转换后的包围框。
bboxresize
bboxcrop
bboxwarp
showShape
imcrop|bboxcrop|bboxresize|imwarp|bboxerase
imcrop
bboxerase
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处