Cropping a particular object in an image
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Aditya
am 30 Mär. 2016
Beantwortet: Image Analyst
am 30 Mär. 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.
0 Kommentare
Akzeptierte Antwort
Image Analyst
am 30 Mär. 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.
0 Kommentare
Weitere Antworten (1)
Charles Dunn
am 30 Mär. 2016
Bearbeitet: Charles Dunn
am 30 Mär. 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.
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!