2013-05-15 2 views
1

Я пытаюсь преобразовать текстовый документ в двоичное изображение, сначала обнаружив его ребра, а затем преобразуя его в двоичное изображение на основе вывода обнаружения края. Может кто-то мне помочь в этом отношении. Это мое изображение после обнаружения края enter image description hereМожно ли преобразовать выход обнаружения края в двоичное изображение OpenCV

ответ

1

Посмотрите на non-maxima suppression. Это используется для преобразования градиентного краевого изображения в двоичное краевое изображение. Трудно будет выбрать слова, если это выше, чем ваше обнаружение края. Возможно, вам придется изменить условия освещения.

Из того, что я помню, это общий алгоритм. Вы хотите убедиться, что текущий пиксель больше двух соседних пикселей. Это наиболее эффективно, когда вы выбираете одну из диагоналей. Здесь я выбрал верхнюю левую до нижней правой диагонали. Если вы пиксель geater, чем его соседей, то это локальный максимум, и вы можете установить его на один. В противном случае есть пиксель в его вакууме, который имеет большее значение, чем его, поэтому вы установите его на 0.

for(int i=1; i<image.width;i++){ 
    for(int j=1; j<image.height;j++){ 
     if(image[i][j]>=image[i-1][j-1] && image[i][j]> image[i+1][j+1]){ 
      image[i][j]=1; 
     }else{ 
      image[i][j]=0; 
     } 
    } 
} 
+0

Можете ли вы предоставить мне некоторый код для подавления немаксимальности в C++? –

+0

См. Мои изменения для кода и пояснений. – chefburns

+0

1 является значением чего? Значение черного i.e "0" или белого "255" ?? –

Смежные вопросы