Cropping a particular object in an image
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Image Analyst
2016-3-30
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 个评论
更多回答(1 个)
Charles Dunn
2016-3-30
编辑:Charles Dunn
2016-3-30
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 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!