How to eliminate some useless lines in an image?
    8 ビュー (過去 30 日間)
  
       古いコメントを表示
    
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....
0 件のコメント
回答 (1 件)
  Image Analyst
      
      
 2022 年 6 月 5 日
        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 件のコメント
  Image Analyst
      
      
 2022 年 9 月 15 日
				Not sure what your edit was today, but did you ever try the code I developed for you?
参考
カテゴリ
				Help Center および File Exchange で Image Processing Toolbox についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

