2017-07-15 4 views
0

Je souhaite extraire la zone verte (affichage du compteur) d'une image. Ici, j'ai joint une image qui est un compteur électrique numérique. Je veux extraire uniquement la région qui contient la valeur de lecture du compteur. Si je ne détecte que la région verte, d'autres régions vertes sont également détectées, mais je ne souhaite détecter que la région verte qui contient la lecture du compteur. Comment puis-je faire ça dans MATLAB?Comment puis-je détecter la zone verte (affichage du compteur) et la rogner à l'aide de MATLAB?

close all; 
clear all; 
clc; 
Im = imread('2.jpg'); 
Im = imresize(Im, [512 512]); 
diff_im = imsubtract(Im(:,:,2),rgb2gray(Im)); 
figure,imshow(diff_im); 

Raw image

Répondre

1

Juste binariser le résultat:

binary = imbinarize(diff_im, 25/255); % optimal threshold would be between 22 and 25 
figure,imshow(binary); 

Vous pouvez également jouer avec des opérations morphologiques après, par exemple ouverture morphologique pour éliminer les restes d'autres zones.

+0

Je ne comprends pas ce que vous faites binarize et pourquoi vous définissez seuil 25/255. Veuillez expliquer –

+0

Je binarise votre image diff_im, et j'utilise le seuil 25/255 car comme vous pouvez le lire dans docs Matlab, imbinarize() attend toujours que le seuil soit dans la plage [0; 1], et diff_im a des valeurs dans la plage [0; 255] – KjMag

+0

mais quand je prends une autre image ... ça ne marche pas dans ton code. Pourquoi ? –