2015-08-05 2 views
2

я использовал код из библиотеки AForge.NETНаклон линии с помощью преобразования houghline C# AForge.NET

HoughLineTransformation lineTransform = new HoughLineTransformation(); 
    // apply Hough line transofrm 
    lineTransform.ProcessImage(sourceImage); 
Bitmap houghLineImage = lineTransform.ToBitmap(); 
// get lines using relative intensity 
HoughLine[] lines = lineTransform.GetLinesByRelativeIntensity(0.5); 

foreach (HoughLine line in lines) 
{ 
    // get line's radius and theta values 
    int r = line.Radius; 
double t = line.Theta; 

// check if line is in lower part of the image 
if (r < 0) 
{ 
    t += 180; 
    r = -r; 
} 

// convert degrees to radians 
t = (t/180) * Math.PI; 
Console.WriteLine("{0},{1}",t,r) 

// get image centers (all coordinate are measured relative 
// to center) 
int w2 = image.Width /2; 
int h2 = image.Height/2; 

double x0 = 0, x1 = 0, y0 = 0, y1 = 0; 

if (line.Theta != 0) 
{ 
    // none-vertical line 
    x0 = -w2; // most left point 
    x1 = w2; // most right point 

    // calculate corresponding y values 
    y0 = (-Math.Cos(t) * x0 + r)/Math.Sin(t); 
    y1 = (-Math.Cos(t) * x1 + r)/Math.Sin(t); 
} 
else 
{ 
    // vertical line 
    x0 = line.Radius; 
    x1 = line.Radius; 

    y0 = h2; 
    y1 = -h2; 
} 

// draw line on the image 
Drawing.Line(sourceData, 
    new IntPoint((int) x0 + w2, h2 - (int) y0), 
    new IntPoint((int) x1 + w2, h2 - (int) y1), 
    Color.Red); 

}

Я добавил Console.WriteLine ("{0}, {1}" , t, r) для отображения кода наклон и радиус линий.

На выходе значение угла наклона составляет 45 или 135 градусов для всех линий изображения, хотя изображение имеет различные наклоны линий. В чем может быть причина? Пожалуйста, помогите ...

В коде отсутствуют ошибки компиляции.

+0

делать линии, которые вы рисуете в конце, основанные на обнаруженной параметризации линии, правильно? – vidstige

+0

Что вы ожидаете, что вы получаете? Без этого все, что мы можем сказать, это то, что он работает как написанный ... – vonbrand

ответ

0

Я думаю, что вы забыли применить фильтр обнаружения края, например Sobel. Линия Хью Афардж использует каждый не черный пиксель для вычисления Линии. Если у вас большая цветная область, у вас будет много линий с степенью наклона 45 и 135 градусов.

Надеюсь, я понял, что ваш вопрос был.

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