2016-03-20 10 views
0

Ich habe ein Bild und mit Tesseract finde ich Text von ihm. Ich habe Bounding-Box des Textes in Form von rect (links, oben, rechts, unten)Ermitteln Schriftfarbe aus Bild in Android nach OCR

Ich möchte die Schriftfarbe des Textes, für den ich versucht, die 2D-Bounding-Box-Matrix zu überqueren und ich bin Vergleichen der Hintergrundfarbe mit jedem Farbpixel in der Bounding Box. Wo auch immer ich eine andere Farbe als Hintergrundfarbe bekomme, gebe ich die Farbe zurück, die die Schriftfarbe wäre.

//rectArrayList is an array list of rect for a line in the image 

for(int i=rectArrayList.get(0).left;i<rectArrayList.get(0).right ;i++){ 
     for(int j=rectArrayList.get(0).top;j<rectArrayList.get(0).bottom;j++){ 

      pixel=colorbit.getPixel(i,j); 
      R = (pixel & 0xff0000) >> 16; //channel the pixel in RGB values 
      G = (pixel & 0xff00) >> 8; 
      B = pixel & 0xff; 

//backColour is the background colour of the image 
      if(backColour!=Color.rgb(R,G,B)){ 
       return Color.rgb(R,G,B); 
      } 

     } 

Nehmen wir an, die Hintergrundfarbe ist ein Schatten von gelb. Aber während ich die Matrix durchquere, erhalte ich eine andere gelbe Farbe, die Hintergrundfarbe hinter der Schriftfarbe und nicht die Schriftfarbe ist. So bekomme ich falsche Schriftfarbe.

Ich weiß, diese Technik als Hintergrundfarbe des Bildes scheitert unterschiedliche Schattierungen von derselben Farbe je nach Helligkeit usw. hätte

Was soll ich tue genaue Schriftfarbe von Bild zu bekommen?

Antwort

1

Ich könnte Ihnen viele verschiedene Lösungen für dieses Problem geben. Hier ist etwas einfach zu beginnen:

Nicht aufhören, wenn Farbe 1 ungleiche Farbe ist 2. Fügen Sie etwas Toleranz hinzu. Berechnen Sie den euklidischen Abstand zwischen den beiden RGB-Tupeln. Überprüfen Sie dann, ob der Abstand größer als ein Schwellenwert ist. Sie können RGB auch in Farbton umwandeln und die absolute Differenz zwischen den beiden Farbtonwerten berechnen.

Natürlich gibt es komplexere und bessere Lösungen, aber angesichts Ihres Wissens über Bildverarbeitung würden sie Ihnen vorerst nicht helfen.

+0

Danke für Ihre Antwort. Ich werde versuchen, alles umzusetzen, was Sie vorgeschlagen haben. Aber sobald ich fertig bin, sie zu implementieren, hoffe ich auf "diese" besseren und komplexeren Lösungen von Ihnen. Prost! –