필터 지우기
필터 지우기

Why regionprops some values looks like bugs?

조회 수: 1 (최근 30일)
Eslam Hamed
Eslam Hamed 2015년 12월 4일
편집: Walter Roberson 2015년 12월 5일
I have Tried Using regionprops with fields of Area, Centroid and BoundingBox. I was desappointed firstly when comparing results of my implementation of Centroid vs the ready Centroid field in regionProps when I find that they are sometimes mostly equally, but sometimes the regionprops centroids give very wrong results.
As for prove here is the values I get from boundingbox
value =
53.5000 36.5000 170.0000 635.0000
value =
41.5000 10.5000 152.0000 671.0000
value =
27.5000 51.5000 217.0000 622.0000
value =
49.5000 7.5000 177.0000 686.0000
value =
35.5000 631.5000 1.0000 1.0000
value =
49.5000 23.5000 180.0000 656.0000
value =
33.5000 471.5000 1.0000 1.0000
value =
41.5000 26.5000 207.0000 674.0000
value =
43.5000 358.5000 1.0000 1.0000
value =
46.5000 59.5000 204.0000 616.0000
value =
33.5000 36.5000 214.0000 632.0000
value =
31.5000 287.5000 1.0000 1.0000
value =
28.5000 29.5000 182.0000 646.0000
value =
56.5000 1.5000 187.0000 699.0000
Why are those 1's in the result??? it's not right at all.

채택된 답변

Image Analyst
Image Analyst 2015년 12월 4일
It's not a bug. Those particular blobs are only 1 pixel big, so the width and height are only 1 pixel. The width and height are measured in terms of whole pixels, while the bounding box goes from a half pixel to the left of the left-most pixel center to a half pixel to the right of the right-most pixel center.
A = [0 1 0 1 1 0]
measurements = regionprops(logical(A), A, 'Area', 'BoundingBox');
for k = 1 : length(measurements)
fprintf('For blob #%d\n the area = %.1f, \n and the bounding box = [%f, %f, %f, %f]\n',...
k, measurements(k).Area, measurements(k).BoundingBox);
end
and see
For blob #1
the area = 1.0,
and the bounding box = [1.500000, 0.500000, 1.000000, 1.000000]
For blob #2
the area = 2.0,
and the bounding box = [3.500000, 0.500000, 2.000000, 1.000000]
  댓글 수: 5
Eslam Hamed
Eslam Hamed 2015년 12월 4일
Thank you again, my bad was my image processing steps, I just used imclose to remove the noise that was wrong from me, thank you a lot again :)
Image Analyst
Image Analyst 2015년 12월 5일
You can use bwareaopen(binaryImage, 1) or bwmorph(binaryImage, 'clean') to remove single pixels.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by