Вы должны быть в состоянии делать то, что вы хотите, то есть обнаруживать строки из неполной информации, используя Преобразование Хафа .
В примерах, сопровождающих * 1005, есть отличная демонстрация* CImg , которая сама по себе является довольно красивой, простой библиотекой C ++ для обработки изображений только для заголовков.Я снял это здесь, показывая, как обновляется область памяти справа, когда я перемещаю мышь сначала вдоль горизонтального стержня клетки, а затем вниз по вертикальному стержню.Вы можете видеть голоса, поданные в аккумуляторе, и что точка в аккумуляторе постепенно нарастает до пика ярко-белого:
Вы также можете поэкспериментировать с ImageMagick в командной строке без необходимости писать или компилировать какой-либо код, см. Пример здесь . ImageMagick устанавливается в большинстве дистрибутивов Linux и доступен для macOS и Windows.
Итак, используя ваш образ:
magick trapezoid.png -background black -fill red -hough-lines 9x9+10 result.png
Или, если вам нужна основная информация, которая идентифицирует 4 строки:
magick trapezoid.png -threshold 50% -hough-lines 9x9+10 mvg:
# Hough line transform: 9x9+10
viewbox 0 0 784 561
# x1,y1 x2,y2 # count angle distance
line 208.393,0 78.8759,561 # 14 13 312
line 0,101.078 784,267.722 # 28 102 460
line 0,355.907 784,551.38 # 14 104 722
line 680.493,0 550.976,561 # 12 13 772
Если вы посмотрите на числа, следующие сразу после хеша (#
), то есть 14, 28, 14, 12 это голосов , которые соответствуют количеству точек / точек в вашем исходном изображении вдоль этой линии.Вот почему я установил threshold
на 10, в части 9x9+10
, а не на 40 в примере ImageMagick , с которым я связан.Я имею в виду, что у вас относительно мало точек в каждой строке, поэтому вам нужен более низкий порог.
Обратите внимание, что преобразование Хафа также доступно в других пакетах, таких как OpenCV .