2010-11-01 12 views
2

Comment puis-je détecter une image ou un motif connu dans une image afin de la remplacer par mon propre texte?Recherche et remplacement de sous-image de l'image

l'option d'entrée 1 (détecter aaa et bbb séparément):

aaa and bbb are 'slots' where I will place my text

option de l'entrée 2 (détecter la valeur rouge et la valeur bleue séparément): Here I use colored rectangles to mark the spaces to fill in

sortie:

what results from the replacement

+0

Quelle représentation avez-vous du motif que vous recherchez? –

+0

Voulez-vous demander si je peux choisir quels sont les motifs? Oui. Je vais créer l'image source. La molécule provient d'un autre programme, mais je vais marquer manuellement où les chiffres iront par tous les moyens nécessaires. – ojreadmore

+0

Ça aide beaucoup! –

Répondre

3

Code de fonctionnement

Je vais vous montrer le code et les résultats en cours d'exécution à l'aide Mathematica option 2.

D'abord, nous lisons l'image

m = [email protected]"C:\\imagereplace.png" 

Ensuite, nous séparons les canaux RVB

ColorSeparate[m] 

Obtention

alt text

Ensuite, nous correlate l'image du canal rouge (celui de droite) avec une matrice de boîte, en conservant uniquement la forme rectangulaire. Et transformer le résultat en une image B & W. Obtention d'une image en taille réelle mais ne contenant que le rectangle noir.

[email protected][m1[[3]], BoxMatrix[3]] ; 

Maintenant, nous trouvons les bords du rectangle (juste une boucle).

Avoir la taille et les coordonnées des rectangles, nous créons une image raster du texte, ce qui correspond à la taille détectée, obtenir:

r1 = [email protected]["My Text", RasterSize -> {jmax-jmin + 1, imax-imin + 1}, 
            ImageSize -> {jmax-jmin + 1, imax- imin + 1}] 

alt text

Maintenant, nous remplaçons le bloc de données avec le nouveau. L'obtention:

alt text

Je ne vais pas faire le canal bleu, comme il est la même chose.

HTH !!

Remarque: La corrélation d'image est la seule astuce utilisée. Le reste est du code comme d'habitude. Here vous pouvez trouver les bases de la corrélation.