How to find and draw boundary on some parts of an object in image?

Hi, i have an image of an object and i wanted to find boundary of parts that shown on image in red boundary. Is it possible to find boundary that exactly repeat the region that i need? If possible share some code or function that can help me? Thanks

Antworten (2)

Is this what you are looking for?
im=imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/119409/Image.JPG');
bw=im(:,:,1)>150 & im(:,:,2)<100 & im(:,:,3)<100; % segment-out the red contours
bw=imfill(bw,'holes'); % fill-in contour interiors
bw=imopen(bw,strel('disk',2)); % remove jagged edges
B=bwboundaries(bw,8,'noholes'); % contour coordinates
figure('color','w')
imshow(im)
hold on
for i=1:numel(B)
h=fill(B{i}(:,2),B{i}(:,1),'r');
set(h,'FaceAlpha',0.2,'LineWidth',2,'EdgeColor','b')
end

1 Kommentar

Thanks, and no i used red lines just to show object but i want to repear exactly the forms of region in image, for example bottom left has some defect in rhomb shape so i want exactly rhomb shape.

Melden Sie sich an, um zu kommentieren.

Image Analyst
Image Analyst am 29 Mai 2018

0 Stimmen

You have lots of "defects" there - ridges, edges, specks, chips, dents, bumps, or whatever. The software doesn't necessarily know what is normal/OK and what is not normal/bad unless you tell it. The best way is to have a reference image - an image of a perfect part that you can then subtract from or divide by the test image. Do you have that?

6 Kommentare

Image Analyst i dont have refernce image, maybe only 3D model of it from where i can printscreen image of an object, so is there any way?
What if I were to say that those two big ridges running from the upper left to the lower right were features/defects that should be found? I don't think you can just say that anything that is not smooth and uniform is something that needs to be segmented, can you? But if you can, maybe just run stdfilt() on it and threshold the result.
So the better way is to have same object without defects and take image of it in same condition with same camera and then compare them?
also as you can see quality of image not very good what if i change my camera and take image with better quality?
Is it possible to play with light to make region with defects for example be darker or brighter and then turn image to binary and find boundary?
Yes, if that's how you want to define defects, then that's perfectly fine. See my Image Segmentation Tutorial for a full demo on how to do that. https://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862&sort=downloads_desc

Melden Sie sich an, um zu kommentieren.

Gefragt:

am 29 Mai 2018

Kommentiert:

am 30 Mai 2018

Community Treasure Hunt

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

Start Hunting!

Translated by