How to eliminate some useless lines in an image?

I would like to know if exist a method that cancels the blue lines directly attached to the yellow shapes; for example obtaining only the pink ones (I only traced in pink some of the lines I need, but obviously this has to be extended to the whole image).
How can I do this? Maybe using some proprierties about pixels within the image? I do not know how to procede....

답변 (1개)

Image Analyst
Image Analyst 2022년 6월 5일

0 개 추천

Get a yellow mask, and a blue mask, and use imdilate to dilate the yellow blobs by one pixel layer. Then use the yellow as a marker image on the blue image with imreconstruct(). Then use that to erase those from the RGB image.
Something like (untested):
yellowMask = (rgbImage(:,:,1) == 255) & (rgbImage(:,:,2) == 255) & (rgbImage(:,:,3) == 0);
blueMask = (rgbImage(:,:,1) == 0) & (rgbImage(:,:,2) == 0) & (rgbImage(:,:,3) == 255);
yellowMask = imdilate(yellowMask, true(3));
% Extract only blobs where yellow was touching the blue.
mask = imreconstruct(yellowMask, blueMask);
% Mask the image using bsxfun() function to multiply the mask by each channel individually. Works for gray scale as well as RGB Color images.
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));

댓글 수: 1

Not sure what your edit was today, but did you ever try the code I developed for you?

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

제품

릴리스

R2021b

질문:

2022년 6월 5일

댓글:

2022년 9월 15일

Community Treasure Hunt

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

Start Hunting!

Translated by