I am trying to find the corners of the "rectangular" shapes. This code is working very well. But I dont know exactly how it works. Can you explain me ??
조회 수: 10 (최근 30일)
이전 댓글 표시
[I,J] = find(binaryimg>max(binaryimg(:))/2);
IJ = [I,J];
[~,idx] = min(IJ*[1 1; -1 1; 1 -1; -1 -1].');
Corners = IJ(idx,:);
댓글 수: 0
채택된 답변
Matt J
2018년 8월 1일
편집: Matt J
2019년 4월 14일
Maybe this image will help. The corners of a polyhedron will maximize/minimize the intercept of lines of a certain slope - it's a linear programming principle. In the code shown, the lines used x+y, x-y, -x+y,-x-y are those oriented at 45 degrees to the x,y axes. As long as the rectangle edges are approximately parallel/perpendicular to the x,y axes, its corners will minimize the intercept of one of these lines.
댓글 수: 4
Matt J
2018년 8월 1일
편집: Matt J
2018년 8월 1일
Thank you for your answer Matt J. Your answer is very clear.
You're welcome, but please Accept-click the answer to certify that it addressed your question.
Can you give me any paper or link about this algorithm ?
I don't think you'll find any papers about it. It's a very ad hoc method (but if you find any, I'd be glad to hear).
Matt J
2020년 2월 6일
Incidentally, I have made a File Exchange submission which generalizes the method to any convex polygon:
추가 답변 (1개)
jim as
2021년 1월 14일
An algorithm addressing this problem that you have raised is escribed in https://arxiv.org/abs/2011.14035
DC
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Graphics Object Programming에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!