Код:Код фильтра кривизны(все опыты можно повторить)
данный образ, мы можем рассматривать его как 3D-поверхность. Таким образом, мы можем использовать классические инструменты дифференциальной геометрии для обработки этой трехмерной поверхности. Предположим, что наша обработанная поверхность, то мы можем извлечь из него обработанное изображение, который является нашим обработанным изображением. Весь процесс показан на изображении в заголовке.
Существует много работ по обработке изображений таким способом, основная идея заключается в том, чтобы встроить изображения в трехмерное пространство, рассчитать различные кривизны (гауссова кривизна, средняя кривизна, главная кривизна и т. д.), а затем выполнить анизотропную диффузию в соответствии с размером кривизны. . И это уравнение диффузии очень математически совершенное, то есть классический геометрический поток, как показано на рисунке ниже. Это кажется логичным, и теоретическая основа очень прочная, но на самом деле игнорирует очень важный вопрос:Наши цифровые изображения часто дискретны..
Многие читатели спрашивают: а что не так с дискретными изображениями? Можем ли мы по-прежнему вычислять его градиент, кривизну, производные по направлениям, тензоры? Просто формула расчета дискретизирована. В самом деле, так ли просто дискретизировать формулу? Существенной проблемой дискретных цифровых изображений является их матовость. Математически,Наше исходное изображение может принадлежатьа не принадлежать. То есть он по своей сути неуправляемый. Каково значение нахождения второй производной (кривизны) для функции, которая сама не является дифференцируемой?
Кандидатская диссертация по фильтрации кривизныПопытки использовать дискретный характер изображения для неявной оптимизации кривизны, то есть уменьшения кривизны без вычисления кривизны.так чтоНе требовать, чтобы окончательный результат был квадратичным выводомдля лучшей защиты краев изображения. С одной стороны, он использует дискретность образов;
С другой стороны, он использует непрерывную дифференциальную геометрию для получения некоторых полезных выводов, обеспечивающих правильность метода. Как совместить эти два идеально, очень сложно.
Далее давайтеГауссовский фильтр кривизныПример, иллюстрирующий, как использовать дискретность данных и непрерывность дифференциальной геометрии. Вообще говоря, мы можем разделить поверхности на две категории: развертываемые поверхности и неразвертываемые поверхности, как показано на следующем рисунке.
Развертываемая поверхность может быть разрезана по базовой линии, а затем сплющена (развернута) полностью плоско на плоскости без каких-либо растяжений или искажений. Такие поверхности обладают хорошими свойствами и хорошо изучены в математике. Каждая точка на такой поверхности имеет нулевую гауссову кривизну. Мы можем использовать это, чтобы построить фильтрацию кривизны, чтобы оптимизировать кривизну.
В теории непрерывной дифференциальной геометрии известно, что поверхность с нулевой гауссовой кривизной является развертывающейся поверхностью, а развертывающаяся поверхностьТолькоТри типа: цилиндрический, конический и тангенциально развертываемый. Как показано на рисунке ниже, мы можем доказать теорему:
Теорема утверждает: для любой точки на развертывающейся поверхности (как показано красной сферой на рисунке выше) она расположена на касательной плоскости точки в ее окрестности (как показано синей сферой на рисунке выше) ( как показано зеленым треугольником на рисунке выше). Итак, как мы можем использовать эту теорему для уменьшения гауссовой кривизны?Это требует использованиядискретность изображенийпостроить секущую плоскость (зеленый треугольник, показанный выше). В маленьком окне 3х3 мы можем перечислить все возможные слайсы. Как показано на рисунке ниже, три цилиндра и красная сфера представляют значения оттенков серого изображения, а зеленые треугольники представляют собой срезы небесно-голубого треугольника. Очевидно, нам просто нужно увеличить или уменьшить высоту красного шара, чтобы он лежал на зеленом треугольнике (касательной).
Используя дискретность данных, мы можем обойти все возможные аспекты, а затем найдите наименьшее изменение текущего значения серого для обновления, которое завершает фильтр кривизны Гаусса. Мы можем повторять этот процесс несколько раз до сходимости. Сходимость доказана вКандидатская диссертация по фильтрации кривизныГлава шестая, раздел первый.Вышеупомянутый процесс полностью использует дискретные особенности изображения и непрерывную теорию дифференциальной геометрии, так чтоИзбегайте расчета кривизныи сложные геометрические потоки (проблемы численной устойчивости, размера шага, временной дискретизации и т. д.). Что еще более важно, фильтр, построенный таким образом, очень прост.Очень быстрые вычисления, на порядки быстрее, чем традиционные потоки геометрии(при условии, что эффект оптимизации аналогичен).Изображение ниже является примером. Слева — исходное изображение, посередине — классический геометрический поток гауссовой кривизны, а крайний справа — результат фильтрации кривизны. Визуально особой разницы между тремя нет. Но соответствующие им энергии гауссовой кривизны равны246,98, 115,4, 97,15.Время расчета традиционного геометрического потока и фильтрации кривизны составляет соответственно4246 мс и 18 мс. Эффективность фильтрации кривизны очевидна.
Простой, эффективный, универсальный,являются тремя особенностями фильтрации кривизны. Фильтрация кривизны может существовать отдельно или в сочетании с термином подбора данных (моделью изображения). И это может не требовать вычисления градиента модели изображения. Это делает его очень общим и может решать произвольные модели изображений (черный коробка). Это то, чего не могут сделать глобальные методы. Насколько проста фильтрация кривизны? На картинке нижеBernstein Filter(фильтр, оптимизирующий среднюю кривизну) псевдокод алгоритма (слишком простой расчет, а эффект оптимизации лучше, чем состояние искусства на два порядка быстрее, см. процесс выводабумага):При использовании только фильтрации кривизны, чем фильтрация кривизны Гаусса отличается от других распространенных алгоритмов сглаживания изображений? В следующей таблице он кратко сравнивается с другими классическими методами:
Очевидно, что если входное изображение представляет собой разворачивающуюся поверхность, фильтр кривизны Гаусса не вносит никаких изменений в изображение. другими словами,Фильтрация гауссовой кривизны сохраняет развертываемые поверхности(сродни,Фильтрация средней кривизны сохраняет наименьшую поверхность). Из-за разных допущений и разных методов расчета результаты сглаживания этих методов несколько отличаются:Проще говоря, фильтрация кривизны имеет хороший баланс сглаживания и сохранения деталей. Это связано с тем, что фильтрация гауссовой кривизны сохраняет кусочно развертываемые поверхности, в то время как другие просто сохраняют кусочно-линейные или кусочно-постоянные поверхности. Последние два являются подмножествами первых, что означает, чтоРезультат фильтрации кривизны дает наименьшее количество артефактов.
Почему мы хотим выполнять обработку изображений в области кривизны, а не в области градиента?Разве область градиента не выводится непосредственно как уравнение Пуассона? Доступно много эффективных решений, а за основу взято множество классических работ. Я также сам выполнял обработку изображений в области градиента, напримерУлучшение изображения на основе распределения градиента,Обработка изображений оптического микроскопа на основе распределения градиента. Градиенты, хотя и являются отличными инструментами для сохранения острых краев, имеют ограничения в практическом применении. Например, интегрируемость — большой вопрос. Поскольку он состоит из нескольких компонентов, между отдельными компонентами могут быть несоответствия. Хотя кривизна является скалярным полем, такой проблемы нет. Это одна из причин, почему область кривизны более идеальна, чем область градиента. Другая причина в том, что кривизна является мерой самой поверхности, а градиент связан с системой координат. Конечно, эти две вещи не совсем не связаны. Средняя кривизна является мерой изменения направления нормализованного градиента.
До того, как была предложена фильтрация кривизны, традиционный поток геометрии на основе кривизны не может хорошо сохранять острые края, поскольку предполагается, что поверхность квадратично гладкая.В то время как фильтрация кривизны требует только, так что градиент может быть хорошо сохранен(Защитить край, эквивалентный градиенту).Сохранение градиента при фильтрации кривизны в основном происходит из-за дискретности данных, а гладкость — из дифференциальной геометрии.Это свойство сохранения границ можно увидеть на графиках выше (сравнение с различными алгоритмами фильтрации) и на графиках ниже (эксперимент с шумоподавлением). Крайнее левое изображение ниже — исходное изображение, среднее — шумовое изображение, а правое — результат после фильтрации кривизны Гаусса. Очевидно, что результаты фильтрации не являются квадратично гладкими на краях, а гладкие поверхности на плечах также восстанавливаются и поддерживаются без эффекта лестницы, как у TV.
Кандидатская диссертация по фильтрации кривизныПодробно объясняет, почему кривизна более выгодна, чем градиент в теории и на практике, и дает теоретические объяснения и разработки для многих известных явлений,По существу открывает новый способ оптимизации кривизны (используя дискретность данных и непрерывность дифференциальной геометрии).. Недавно также было показано, что средняя кривизна является членом выпуклой регуляризации,Bernstein Filter, что безусловно облегчит применение средней кривизны в различных задачах обработки изображений.
Наконец, надеюсь, обработка изображений на основе кривизны будет процветать!
Вставьте ссылку с кодом еще раз:Код фильтра кривизны, я надеюсь, что друзья, которым это нравится, могут наградить звездой на github!
Ссылки на журнальные статьи находятся по адресуздесь.
использованная литература:
@ARTICLE{gong:cf, author={Yuanhao Gong and Ivo F. Sbalzarini}, journal={IEEE Transactions on Image Processing}, title={Curvature filters efficiently reduce certain variational energies}, year={2017}, volume={26}, number={4}, pages={1786-1798}, doi={10.1109/TIP.2017.2658954}, ISSN={1057-7149}, month={April},} @phdthesis{gong:phd, title={Spectrally regularized surfaces}, author={Gong, Yuanhao}, year={2015}, school={ETH Zurich, Nr. 22616}, note={http://dx.doi.org/10.3929/ethz-a-010438292}} @INPROCEEDINGS{gong:Bernstein, author={Yuanhao Gong}, booktitle={2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)}, title={Bernstein filter: A new solver for mean curvature regularized models}, year={2016}, pages={1701-1705}, doi={10.1109/ICASSP.2016.7471967}, month={March},} @article{gong:gc, Author = {Yuanhao Gong and Ivo F. Sbalzarini}, Journal = {Intl. Conf. Image Proc. (ICIP)}, Month = {September}, Pages = {534--538}, Title = {Local weighted {G}aussian curvature for image processing}, Year = {2013}}
======================== Более 100 лайков, добавьте больше графики ==================== =======
Приведенная выше теория дифференциальной геометрии также полностью применима к обработке треугольной сетки:
Принцип точно такой же.Для поверхности, представленной треугольной сеткой, можно также перечислить соседей каждой ее вершины.Если это развертывающаяся поверхность, то она также должна удовлетворять приведенной выше теореме дифференциальной геометрии! Таким образом, мы можем использовать тот же метод, чтобы сделать треугольную сетку развертываемой поверхностью.Кандидатская диссертация по фильтрации кривизныПриложение II (стр. 195) дает простой пример, как показано на рисунке ниже, где энергия гауссовой кривизны поверхности сетки уменьшается после многих итераций. Конечно, оптимизация кривизны треугольной сетки немного сложнее, потому что каждая вершина может двигаться в трех измерениях, в отличие от значений оттенков серого на изображении, которые могут двигаться только вверх и вниз. Но математика за этим та же самая.
Реализация фильтрации кривизны Гаусса треугольных сеток основана наLibIGL(Поскольку я посещал занятия Ольги, когда был аспирантом в ETH, я был знаком с этой библиотекой, поэтому взял ее на вооружение).
Какой практический смысл превращать произвольную поверхность в развертываемую поверхность?Поскольку развертываемые поверхности широко используются в обрабатывающей промышленности, большинство искусственных вещей состоят из развертываемых поверхностей, например, дизайн одежды на следующем рисунке. Крайний справа — развитая разворачивающаяся поверхность. Очевидно, что это прекрасно применимо и к другим отраслям производства, таким как судостроение, строительство, производство одежды, автомобилей, самолетов, космических кораблей, смартфонов и т. д. Для производства конструкции с развертываемой поверхностью легче изготовить, чем с неразвертываемой поверхностью.
Еще один пример архитектурного решения:
Помимо важности для обрабатывающей промышленности,Разворачиваемые поверхности также очень важны для компьютерного моделирования.. Например, необходимо выполнить термический анализ сложной поверхности в правой части рисунка ниже. Моделирование теплопроводности непосредственно на нем достаточно сложно (метод конечных элементов, метод частиц). Но если вы развернете его, как показано слева, его будет намного проще смоделировать на плоскости (независимо от того, насколько сложны границы).
Суть этой задачи заключается в вычислении геодезического расстояния между любыми двумя точками поверхности. Двумерная поверхность сама по себе является двумерным многообразием, и, очевидно, ее гораздо легче вычислять в двумерном пространстве, чем в трехмерном. Однако внешние свойства (такие как средняя кривизна, векторы нормалей и т. д.) не сохраняются. Но внутренние геометрические величины (такие как расстояние, площадь и угол) сохраняются.
Надеюсь, это основано надисперсия образцаиДифференциальная геометрическая непрерывностьИдея также вдохновляет друзей, которые занимаются компьютерной графикой, чтобы создавать лучшие и быстрые отличные алгоритмы.