2013-06-10 13 views
5

Il mio imagem ha un "riflesso di luce", i due primi zeri sull'immagine hanno una luce diversa dal resto dell'immagine. Quando lo converto in un'immagine binaria, questa parte diventa bianca e ho bisogno di ottenere il contorno esatto del numero e questo ostacola. Posso risolvere questo problema usando OpenCV?Cosa posso fare per eliminare una "luce di riflessione" di un'immagine? using OpenCV

l'immagine originale https://docs.google.com/file/d/0BzUNc6BOkYrNNlE3U04wWEVvVE0/edit?usp=sharing

la versione binaria https://docs.google.com/file/d/0BzUNc6BOkYrNeEE0U3NvOElqa1E/edit?usp=sharing

Se io aumento il valore della soglia, perdo i numeri sul lato destro dell'immagine. Il mio codice:

#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace cv; 

int main (int argc, char **argv) 
{ 
    Mat im_gray = imread("img2.jpg",CV_LOAD_IMAGE_GRAYSCALE); 

    Mat im_rgb = imread("img2.jpg"); 
    cvtColor(im_rgb,im_gray,CV_RGB2GRAY); 

    Mat img_bw = im_gray > 90; 

    imwrite("image_bw2.jpg", img_bw); 

    return 0; 
} 
+5

Utilizzare la soglia adattativa – Blender

+0

È possibile utilizzare una maschera. Più un pixel è bianco, più diventa nero. Cioè si sostituiscono le aree di colore marrone e rosso con il nero. – William

risposta

2

Ombre e riflessi non sono problemi facili da lavorare. Ma con un buon lavoro, sono possibili da superare.

Un altro passaggio consiste nell'utilizzare l'immagine con soglia come maschera per ottenere un'altra immagine con soglia. Qui ci sono alcuni criteri che hanno lavorato per me:

  • Limitazione tutti, ma il picco dominante nei pixel contenuti nel istogramma della intermedio (quello che hai in questo momento) thresholded immagine
  • Utilizzare la derivata di trovare i confini (cvSobel può aiutare)
  • utilizzano una combinazione di rigorosa adattivo e liberale della soglia difficile da prendere in considerazione l'illuminazione variabile di diverse parti dell'immagine
0

realtà problema non è così difficile nel tuo caso. Poiché hai solo 10 numeri diversi, forma dei classificatori per riconoscerli.

Per Fast Start è possibile utilizzare http://blog.damiles.com/2008/11/basic-ocr-in-opencv.html

che funzionerà perché i difetti ripetono anche in una certa misura. È possibile addestrare l'algoritmo per riconoscere le immagini con difetti e dimenticare di rimuoverle.

Problemi correlati