2016-07-20 7 views
0

У меня есть этот образсглаживающие острые углы контура OpenCV

enter image description here

при увеличении его вы можете увидеть неровные края, как этот

enter image description here

Я хочу, чтобы сгладить острые углы, такие что они образуют почти идеальную кривую/линию, некоторые примерно такие enter image description here

Я пробовал этот метод Image edge smoothing Но я не могу сохранить его как файл BMP. Я тоже пробовал гауссовское размытие, но не сильно повлиял. Контуры являются контурами, выделенными из двоичного изображения. Увеличение толщины контуров приводит к удалению шероховатых краев в точку, но оно меняет четкое определение границ.

EDIT: -Как о заполненных бинарных изображениях?

Это

enter image description here

в

enter image description here

расширяющий изменит границу слишком много.

+2

Вы не можете сделать это с помощью _digital_ изображений. Ваш лимит - это пиксель. Вы можете делать сглаживание, но это просто визуальный эффект. – Miki

+0

Если утолщение границы - это то, что вы хотите (вывод из второго рисунка и 3-го рисунка, поскольку один пиксель, который вы хотите расширить до другого пикселя в ближнем регионе, скажем, около 2 пикселей), вы можете пойти на морфологические операции, возможно в вашем случае http://docs.opencv.org/master/d9/d61/tutorial_py_morphological_ops.html#gsc.tab=0 – Saurav

+0

как насчет заполненного изображения, как показано в моем редактируемом вопросе? –

ответ

2

То, что вы ищете, невозможно в том виде, как вы думаете. Как заявил @Miki, цифровые изображения имеют верхний предел разрешения, который вы не можете продвигать дальше.

Решение должно представлять ваши кривые как векторизованные кривые. Затем вы можете отображать любое требуемое разрешение. Одним из возможных решений является использование Bezier Curves для представления контуров (или Spline). Затем вы можете просто нарисовать их с любой фракцией изменения размера, которую вы хотите.

Здесь вы можете найти некоторые ресурсы:

+0

как насчет заполненного изображения, как показано в моем отредактированном вопросе? –