Подробнее о поиске краёв
Подробнее об алгоритмах выделения краёв, которые можно попробовать в «Краевых эффектах», — и о том, как каждый метод находит контуры на фото.
Как детекторы находят контуры
Край — это место, где яркость или цвет резко меняются: контур лица, здания или листа на фоне неба. Детекторы просматривают каждый пиксель, сравнивают его с соседями и превращают эти скачки в линии. Методы ниже исходят из одной идеи, но измеряют изменение по-разному, поэтому одно и то же фото может стать тонкими чернильными штрихами, мягким карандашным наброском или толстым контуром формы.
Выделить края
«Выделить края» переводит фото в оттенки серого и применяет два небольших ядра Собела: одно смотрит влево–вправо, другое вверх–вниз. Сочетание √(gx² + gy²) даёт каждому пикселю силу: насколько здесь резкий скачок? Сильные изменения становятся краями. PictorX по умолчанию инвертирует результат — тёмные линии на светлом поле, классический штриховой вид. Прозрачность можно сохранить, чтобы контур лежал поверх того, что за слоем.
Sobel
Sobel использует те же ядра влево–вправо и вверх–вниз, но измеряет каждый цветовой канал отдельно. Контур сохраняет намёк исходных цветов, а не плоский серый набросок. По сравнению с Canny это более мягкий градиент: у краёв есть толщина и спад, а не двоичная линия в один пиксель. Инверсия включена по умолчанию — удобно для печати.
Laplace
Лапласиан смотрит на вторую производную: не только «меняется ли яркость?», но и «достигает ли само изменение пика?» PictorX использует ядро 5×5 с 24 в центре и −1 вокруг. Где край резкий, отклик всплескивает; плоские области остаются около нуля. Результат инвертируется. Laplace чаще Sobel ловит мелкую текстуру — ткань, волосы, листву — и может выглядеть более шумным.
Canny
Canny — конвейер, а не одно ядро. Фото переводится в серое и размывается, чтобы шум не стал ложными краями. Шаг Sobel находит силу и направление градиента. Подавление немаксимумов оставляет только гребень каждого края, сужая широкие градиенты до линии в один пиксель. Два порога и гистерезис решают, что останется: пиксели выше высокого порога — надёжные края; между низким и высоким остаются только если связаны с надёжным краем. Результат — чистый двоичный штрих. Сильнее размойте, чтобы игнорировать текстуру; поднимите высокий порог, чтобы оставить только самые сильные контуры.
Светящиеся края
«Светящиеся края» — цветной Sobel без инверсии: яркие цветные штрихи на тёмном поле. Каждый канал RGB даёт своё свечение — неоновый контур, а не печатная графика.
XDoG
XDoG (Extended Difference of Gaussians) сравнивает два размытия одного фото: чуть более узкое и более широкое (около 1,6×). Вычитание с весом τ выделяет полосу контраста между этими масштабами — туда, куда в рисунке лёг бы штрих. Порог превращает разницу в тушь. Мягкие штрихи имеют плавный спад (серый карандаш); жёсткие — чёрные или белые. XDoG больше похож на набросок, чем на научную карту краёв.
Морфологический градиент
Морфологический градиент не использует ядра производных. Он расширяет фото (каждый пиксель становится самым ярким соседом в радиусе) и сужает его (самый тёмный сосед), затем вычитает. Остаётся полоса вокруг каждой формы толщиной с радиус. Это следует силуэту больше, чем мелкой текстуре — удобно, когда нужен жирный контур, а не каждая складка.
Какой метод выбрать?
Canny — для тонких чистых контуров. «Выделить края» или Sobel — для классического вида «фото в линии» с серым спадом. Laplace — для большей текстуры, «Светящиеся края» — для неона на чёрном, XDoG — для карандаша или туши, морфологический градиент — для более толстых контуров формы. Все варианты можно попробовать на странице «Краевые эффекты».
Часто задаваемые вопросы
Что такое край на фото?
Край — внезапное изменение яркости или цвета, контур. Детекторы измеряют это изменение в каждом пикселе и превращают самые сильные скачки в линии.
Чем Canny отличается от «Выделить края»?
«Выделить края» (и Sobel) дают мягкий градиент силы края. Canny размывает, сужает эти градиенты до гребней в один пиксель и использует два порога, чтобы остались только самые чистые линии.
Почему «Выделить края» инвертирует фото?
По умолчанию края становятся тёмными линиями на светлом поле — привычный штриховой вид. Отключите инверсию для светлых краёв на чёрном.
Какой метод больше всего похож на карандашный набросок?
XDoG. Он сравнивает два размытия и рисует штрихи там, где контраст лежит между этими масштабами — ближе к туши или карандашу, чем к научной карте краёв.
Готовы попробовать?
Откройте PictorX в своем браузере — установка не требуется, для запуска не требуется кредитная карта.
Попробовать краевые эффекты