removing the pixels with different size and unregular shape

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

 Accepted Answer

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 Comments

Thank you for the reply.
these are rill erosion areas and I am going to detect them with image processing.my goal is keeping just these 3 areas in my final image. At first I did image classification and then using image region analyser app in matlab I could delete large and small areas.
That does not answer the question. I know you produce a binary image with some blobs or outlines in it. And I know that you want to keep some of them and delete some of them. But how are you going to specify those that you want to keep or delete? Will you choose them by size? By location? By shape? By something else?
In RGB image I detected them as erosion areas (the marked pixels), now I want to keep them with some tricks. there is no criterion for selecting them except their location.
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.

Sign in to comment.

More Answers (1)

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(:))

Products

Release

R2022a

Community Treasure Hunt

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

Start Hunting!