2 votes

Comment puis-je remplir les espaces entre les bords de ces caractères en matlab ?

Voici mon image

a.jpg

si j'utilise la fonction imfill, j'obtiens l'image suivante

b.jpg

Je dois mettre le trou dans le numéro 6. Comment puis-je le faire ?

plz, quelqu'un peut-il m'aider ?

merci

2voto

Richard Points 870

Voici une approche plus simple et plus robuste que celle fournie par Rotem :

I = imread('https://i.imgur.com/Ap2PX2E.png');
I = im2bw(I);

I2 = imfill(I,'holes');         % Create filled image
I3 = I & imerode(I2, ones(3));  % Create enclosed hole boundaries
I4 = I2 & ~imfill(I3, 'holes');  % Subtract enclosed holes

figure;
imshow(I4)

Result

1voto

Rotem Points 3340

Vérifiez la solution suivante :

J'ai joué avec le remplissage de l'image et le remplissage du négatif de l'image, jusqu'à ce que je le résolve.

Voici mon code :

I = imread('https://i.imgur.com/Ap2PX2E.png');
I = im2bw(I);

J1 = imfill(I, 'holes');
J2 = imfill(I, [1, 1]);
J3 = imfill(~J2, [1, 1]);
J4 = imfill(~J3, 'holes');
J5 = J1 & (~J4);

figure;imshow(J5)

Résultat :
enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X