Растеризация линии Брезенхэма не соединяет пиксели

Я пытаюсь нарисовать линию, используя алгоритм линии Брезенхема, учитывая начальную (x1, y1) и конечную (x2, y2) точки. Каждый раз, когда я пытаюсь нарисовать линию, пиксели отключаются. Я следил за решениями Matlab Matlab Bresenham 8-connected , Bresenham 4-connected, Bresenham любой градиент и DDA тоже.

Но каждый раз, когда я пытаюсь нарисовать крутые линии, пиксели отключаются. Я не уверен, что это проблема с Matlab imshow.

Представьте, что я получаю (синяя линия).

Результат Брезенхема

Я хочу что-то точное, как:

Структурирующий элемент Matlab

Обратите внимание, что я использовал элемент структурирования (функция strel в Matlab для создания бинарного изображения).

Может кто-нибудь, пожалуйста, помогите мне в этом? Я ценю ваше время и усилия.


person PManjunatha    schedule 20.03.2018    source источник
comment
Bresenham требует, чтобы уклон был меньше 1. Если у вас большие уклоны, вам нужно использовать другую систему координат, в которой у вас есть соответствующий уклон (например, поменять местами x/y). Кстати, я очень сомневаюсь, что синяя линия является результатом реализации Bresenham.   -  person Nico Schertler    schedule 20.03.2018
comment
См. эту запись в блоге, где приведена простая реализация и понятное объяснение.   -  person Cris Luengo    schedule 20.03.2018


Ответы (1)


Это проблема с разрешением экрана. На 13-дюймовом MacBook Pro синяя линия с крутым градиентом была отключена. На мониторе с высоким разрешением, таком как 22-дюймовый (1920x1080), крутые синие линии соединяются хорошо.

Соединенная линия

person PManjunatha    schedule 22.03.2018