我有2个对象,然后在Matlab中使用以下代码计算相交区域:
rect1=im2double(rgb2gray(imread('rect1.png')));
obj1=im2double(rgb2gray(imread('obj1.png')));
[Br, Lr, Nr]=bwboundaries(rect1);
rect1boundary=Br{1};
plot(rect1boundary(:,2), rect1boundary(:,1), '.r'); hold on
[Bo, Lo, No]=bwboundaries(obj1);
obj1boundary=Bo{1};
plot(obj1boundary(:,2), obj1boundary(:,1), '.c')
xv=obj1boundary(:,1); yv=obj1boundary(:,2);
xq=rect1boundary(:,1); yq=rect1boundary(:,2);
[in,on] = inpolygon(xq, yq, xv, yv);
rect_areain = polyarea(xq(in), yq(in) );
rect_area=polyarea(xq,yq );
输出显示rect_areain
是13167,而rect_area
是83076。这没有意义,因为看起来原始矩形中大约一半的区域与蓝色多边形重叠(绿色区域下面)。
我希望rect_areain
大约是40000。
不仅对于本示例,而且如果红色的对象是对象的任意边界,而不仅仅是矩形,我如何才能正确地获得它?
答案 0 :(得分:0)
使用polyshape
就像@Cris Luengo建议的那样