2010-10-05 22 views
1

Je fais un traitement graphique et j'ai une logique où j'ai un bitmap avec des bords et je ne tiens pas compte de tous les bords de la table des lettres E.g.Différencier la ligne de la table à partir de grosses lettres

0000000000 
0111111110 
0100000010 
0102220010 
0100200010 
0100200010 
0100000010 
0111111110 
0000000000 

0 - couleur de fond
1 - bords ignorés
2 - bords ai besoin

Ma logique est tout simple, si un certain nombre de pixels continus dépasse un certain seuil, par exemple 20pixels de bords continus, il va le considérer comme une ligne et ne pas en tenir compte. Mon problème est que sur une grande taille de police et des lettres telles que H et T, il va certainement dépasser le seuil. S'il vous plaît aviser s'il y a un meilleur moyen ou une logique supplémentaire que je dois mettre en œuvre afin de séparer les lignes de table des lettres.

[mise à jour] Autre considération: Performance, cette logique sera utilisée pendant le mouvement tactile (glisser). Il sera appelé beaucoup de fois, donc il doit être rapide.

Répondre

1

Si les lignes de table sont garanties d'être fines, ignorez les lignes épaisses. Cependant, si les lignes de votre application sont générées par la détection des contours (qui sont toujours de 1 pixel), alors le composant connecté sera nécessaire.

Fondamentalement, le « épaisseur » se réfère à l'épaisseur mesurée à partir d'un profil de bord:

  • 00000000100000000 Cette ligne a une épaisseur de 1
  • 00000011111000000 Cette ligne a une épaisseur 5. Toutefois, cela ne peut pas se produire dans la production de détection de bord, car les algorithmes de détection de bord sont spécifiquement conçus pour supprimer cette condition.
  • 00000000111111111 Il s'agit d'une transition du noir au blanc.

Les lignes de tableau ont généralement une faible épaisseur. Les grandes polices ont généralement une transition du noir vers le blanc car leur épaisseur est supérieure à celle de la fenêtre du profil de bord.

+0

semble être une solution viable, je vais l'essayer d'abord, et l'accepter plus tard si cela fonctionne. Je vous remercie – Manny