How to check neighbouring elements in a 2D array

I have a 2D array (~1000x1000) of intensity values that I would like to transform into an image to use as a mask for data processing in another program. I would like to mask out the dark lines and the corners:
What I am thinking is that for each element in the array, the neighbouring values (e.g. in a set radius) are checked for the proportion of zero values. If the proportion of zero values is above a set threshold, it should return a zero and otherwise it should return a one.
Happy to hear suggestions about other ways of going about this, and thank you in advance.

2 commentaires

KSSV
KSSV le 19 Juin 2023
To checl neighbouring elements read about knnsearch. What exactly you are epxecting? You want to make black lines inside the whitre region to white?
Basically I would like the black regions (lines and corners) to be solid black, and the white regions to be solid white.
Here is an example of a type of output I'd be looking for, noting that it doesn't have the corners cut out.

Connectez-vous pour commenter.

 Réponse acceptée

Matt J
Matt J le 19 Juin 2023
Modifié(e) : Matt J le 19 Juin 2023
load Image
BW=bwareaopen(~BW,100);
se=ones(7);
BW=medfilt2(BW,size(se));
BW=bwareaopen(BW,100);
BW=~bwareaopen(~BW,100);
BW=imclose(BW,se);
BW=conv2(BW,ones(5),'same')>0.5;
imshow(BW,[]); shg

Plus de réponses (0)

Catégories

En savoir plus sur Display Image dans Centre d'aide et File Exchange

Produits

Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by