How can I improve regionprops() use?

2 vues (au cours des 30 derniers jours)
Jacob Ebilane
Jacob Ebilane le 4 Avr 2022
Modifié(e) : Tala le 4 Avr 2022
I have a code I use to get the center of each letter/number in an image using bounding boxes. But for some reason region props detects a segment of the border(Left side of image) as an object. I wanted to know how I can prevent this from happening because it does for my other data. I used this function. I marked the centers of each object r+
function [store,cent] = Segment(appim)
global bd BB coor store
binim = imbinarize(appim);
box = regionprops(binim,'BoundingBox');
bd = [box];
coor = [];
store = [];
for k = 1 : length(box)
BB = box(k).BoundingBox;
coor{k} = BB;
rectangle('Position', [BB(1),BB(2),BB(3),BB(4)],'EdgeColor','r','LineWidth',1);
st = imcrop(appim,[BB(1),BB(2),BB(3),BB(4)]);
sz = size(st);
if (sz(1) < 3)%Disregard small unnecessary artifacts
elseif (sz(2) < 3)
store{k} = st;
cent{k}(1) = (coor{k}(1)+(coor{k}(3)/2));%X Coordinates
cent{k}(2) = (coor{k}(2)+(coor{k}(4)/2)); %Y Coordinates
cent = {cent{2:length(cent)}}; %Object center coordinates
  2 commentaires
Jacob Ebilane
Jacob Ebilane le 4 Avr 2022
It doesn't do it on my other samples. It really just does it for this particular one so I assumed that it doesn't put a bounding box on objects that extend up to the edge of an image. Is there a way I could make it so it doesnt include them?

Connectez-vous pour commenter.

Réponse acceptée

Tala le 4 Avr 2022
Modifié(e) : Tala le 4 Avr 2022
To Matt's point, you do have an object and you should expect to see it's centroid. to avoid this, you can use imcrop to crop out your region of interest, or clean the borders, or pad zeros. If all of your objects at the border are "long", you can filter them out with 'MajorAxisLength'property with regionprops.

Plus de réponses (0)




Community Treasure Hunt

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

Start Hunting!

Translated by