Effacer les filtres
Effacer les filtres

Cropping a particular object in an image

1 vue (au cours des 30 derniers jours)
Aditya
Aditya le 30 Mar 2016
Hello,
I need to crop a specific object from an image, I have the object annotated and I also have the pixels of the boundaries of the object. Now I want to crop that particular object and nothing else. Please help me out.
Thanks.

Réponse acceptée

Image Analyst
Image Analyst le 30 Mar 2016
You said you " have the pixels of the boundaries of the object", so simply use them as indexes:
croppedImage = originalImage(row1:row2, col1:col2); % Gray scale.
croppedImage = originalImage(row1:row2, col1:col2, :); % If color RGB image.

Plus de réponses (1)

Charles Dunn
Charles Dunn le 30 Mar 2016
Modifié(e) : Charles Dunn le 30 Mar 2016
You might find Point in Polygon algorithms useful: https://en.wikipedia.org/wiki/Point_in_polygon
It would be a lot simpler if the object were guaranteed to be convex, but I doubt that is the case.
Here is a simple-ish method. Do a cumsum() horizontally on the binary boundary image. For any pixels with an odd cumsum value, they are in the shape. Or that binary mask with the boundary pixels, and you'll get a binary mask for your full shape.
There is an edge case where a boundary is horizontal, so your cumsum will run exactly along the boundary. I'm not sure how to handle that case robustly...
There are probably more efficient/robust methods as well.

Community Treasure Hunt

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

Start Hunting!

Translated by