removing the pixels with different size and unregular shape

5 次查看(过去 30 天)
Hi everyone
I want to delete some pixels in my binary image and keep some others. I have tried but the solutions like defining structuring element did not work.
I would be grateful if you could help me or share your ideas about the possible solutions.
The image and a screenshot with the marked wanting pixels is attached

采纳的回答

Image Analyst
Image Analyst 2022-7-27
Out of all the blobs in the image, why those specific 3? What's different about those 3 blobs? Will they always be there? If so just use bwselect or simply mask out those pixels with some known template. If they change shape, size, and location then it might be better to just improve your segmentation algorithm so that they don't get created in the first place.
  5 个评论
Image Analyst
Image Analyst 2022-7-27
Then bwselect is what you want. You can specify a row and column and a binary image and it will extract blobs that are true at that location. Then you can use that to erase it from the binary image. Let's say you want to delete the blob that has a white pixel at row 30 and column 100. You could do
blobToErase = bwselect(binaryImage, 100, 30); % One single blob.
binaryImage(blobToErase) = false; % Remove that blob from the image.

请先登录,再进行评论。

更多回答(1 个)

Chunru
Chunru 2022-7-27
A simple approach is to find the regions you want to deleted (assign 0). Four your question, rectangle regions are sufficient:
I = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1078370/image.jpg');
subplot(121); imshow(I);
xline([60 220 1180 1380], 'r')
yline([1050 1380 1940 2300], 'r')
I(1050:1380, 60:220) = 0;
I(1940:2300, 1180:1380)=0;
subplot(122); imshow(I)
xline([60 220 1180 1380], 'r')
yline([1050 1380 1940 2300], 'r')
% mode(I(:))

类别

Help CenterFile Exchange 中查找有关 Convert Image Type 的更多信息

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by