Intersecting and non-intersecting box regions
이전 댓글 표시
Having a set of bounding box values [x y width height] , how can i find the number of bounding box that gets intersected and that do not gets intersected when plotted

From the above example, there are 5 intersecting boxes and 2 non-intersecting boxes
How can i do so with the attached bounding box values
채택된 답변
추가 답변 (2개)
Simon Chan
2021년 7월 10일
If viusal inspection is allowed, then the number can be counted by plotting the boxes in a figure:
rawdata=load('bbx.mat');
figure
for k=1:length(rawdata.bbx)
rectangle('Position',rawdata.bbx(k,:))
end

댓글 수: 4
Elysi Cochin
2021년 7월 10일
Simon Chan
2021년 7월 10일
The following method may only appropriate for the case where multiples of x and y are both integers.
In this case, the x and y coordinates are in 0.5 format and hence I multiply by 2.
Assign a matrix B which is large enough to cover all the boxes.
Add 1 to the region of each box and the overlapping boxes will have value inside its box > 1, which indicates intersecting boxes.
data=2*rawdata.bbx; % Make all coordinates to integers
B = zeros(1000,1000); % Matrix to accumulate all boxes
for k=1:length(rawdata.bbx)
A=zeros(1000,1000);
A(data(k,2):data(k,2)+data(k,4),data(k,1):data(k,1)+data(k,3))=1;
B = B+A;
end
% Calculating all the values inside each box after accumulation
for k =1:length(rawdata.bbx)
finalarea(k,1)=sum(sum(B(data(k,2):data(k,2)+data(k,4),data(k,1):data(k,1)+data(k,3))));
end
area=(data(:,3)+1).*(data(:,4)+1); % Original area of each box
Intersect_Number = sum(finalarea-area>0)
Elysi Cochin
2021년 7월 10일
Simon Chan
2021년 7월 10일
Would you please run the following commands before the above script:
clear;
clc;
If the error happens again, would you please run the following:
size(A) % Check the dimension of Matrix A
size(B) % Check the dimension of Matrix B
KSSV
2021년 7월 10일
0 개 추천
Run a loop for each box and find the intersection points. Use this to get the intersection points.
If your output is empty, it means there is no intersection.
댓글 수: 3
Elysi Cochin
2021년 7월 10일
KSSV
2021년 7월 10일
You have origin, length and width of bounding box. So you can get four vertices of the box. You need to use four coordinates for each bounding box to get the intersection points.
Elysi Cochin
2021년 7월 10일
카테고리
도움말 센터 및 File Exchange에서 Image Arithmetic에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!