Canny Edge
canny edge — карта контуров для контроля композиции
Canny Edge — алгоритм извлечения контуров изображения, изобретённый Джоном Канни в 1986-м. В Stable Diffusion через ControlNet Canny используется как «обводка», на которой модель строит новую картинку. Хорошо подходит для переноса конкретных линий: контуры зданий, силуэты предметов, шрифт. В отличие от Depth (объём) и OpenPose (поза), Canny задаёт плоскую карту границ; точное повторение геометрии генерацией не гарантируется.
Коротко
Коротко. Canny Edge превращает изображение в карту контрастных границ. Совместимая ControlNet использует её как геометрическую подсказку: крупные линии и силуэты сохраняются лучше, а стиль и детали можно менять. Такой контроль подходит для эскизов, предметов и архитектуры, но не гарантирует точный текст или узнаваемое лицо.
Что это такое
Иллюстратор делает серию упаковок для пива. Дизайнер уже нарисовал контурный набросок: бутылка, этикетка, текст, орнамент. Нужны несколько стилевых вариантов: например, винтажный, минималистичный и готический.
Canny извлекает контуры из эскиза и передаёт их совместимой ControlNet. Генерации сильнее держатся за силуэт и расположение крупных линий, но не обязаны повторять мелкий текст или геометрию пиксель в пиксель.
Дизайнер получает несколько управляемых вариантов и проверяет, где карта сохранила форму, а где вместе с полезным контуром закрепила лишний шум.
Canny — классический алгоритм компьютерного зрения, опубликованный в 1980-х. Он не зависит от генеративной модели: сначала извлекает границы, а уже затем совместимый модуль управления использует полученную карту.
- Перевод эскизов в финальные иллюстрации.
- Перерисовка логотипов и упаковок в новых стилях.
- Контроль архитектуры зданий.
- Сохранение общей геометрии надписи перед финальной ручной вёрсткой.
- Перенос композиции с минимальной свободой.
Как это работает
Упрощённо обработка состоит из четырёх этапов. В конкретной реализации часть подготовки, например сглаживание, может выполняться отдельно. Пример есть в документации OpenCV.
- Размытие Гауссом. Уменьшает шум, чтобы алгоритм не реагировал на пиксельный мусор.
- Поиск градиентов. В каждом пикселе считается, насколько резко меняется яркость. Резкие переходы = края.
- Подавление немаксимумов. Сохраняются локальные максимумы градиента вдоль его направления — широкие полосы границ становятся тоньше.
- Двойной порог + связность. Слабые края, не связанные с сильными, отбрасываются. Получается контурная карта; лишние границы в ней всё ещё возможны.
Параметры Canny (управляют чувствительностью):
- Low threshold — нижний порог. Чем ниже, тем больше слабых линий ловит.
- High threshold — верхний. Чем выше, тем меньше шумных линий проходит.
Порогов два: нижний помогает продолжать слабые границы, верхний отмечает уверенные. Рабочие числа зависят от контраста и масштаба исходника, поэтому их подбирают по самой карте: нужные линии должны остаться, а шум и фактура — уйти.
В нодовом интерфейсе цепочка выглядит так: загрузка изображения → препроцессор Canny → совместимая модель контроля → сэмплер. Названия нод и файлов зависят от установленного пакета и архитектуры базовой модели.
Пример на практике
Допустим, дизайнер обновляет оформление логотипа. Клиент дал старый логотип — кружка с надписью «Cofee Bar» (с опечаткой). Нужно перерисовать в трёх стилях: акварель, неон, металл-гравюра. Композицию хочется сохранить, а надпись в финале должна быть точной.
Последовательность работы:
- Photoshop: исправляет опечатку → «Coffee Bar». Сохраняет PNG.
- ComfyUI: загружает картинку, применяет препроцессор Canny. Пороги подбирает по предпросмотру карты, учитывая шкалу ноды. Получает контурную карту: кружка + текст белыми линиями на чёрном.
- Запуск 3 раза с разными промптами:
watercolor coffee shop logo, soft pastels, vintage paperneon coffee shop sign, dark background, cyberpunk stylemetal engraving coffee logo, victorian, copper plate
- Сила контроля (strength) подбирается сравнением нескольких значений: достаточно удержать геометрию без заметной обводки в финале.
Результат — несколько стилистических направлений с близкой общей композицией. Точный логотип и шрифт лучше накладывать после генерации в векторном редакторе: edge-карта не гарантирует корректные буквы.
Принцип одинаков для разных семейств диффузионных моделей, но модель контроля должна быть совместима с конкретной архитектурой. Поведение на художественных и технических линиях проверяют на своих исходниках.
С чем часто путают
- Canny и Lineart — Lineart-препроцессор старается получить рисунок линиями, а Canny отмечает перепады яркости. Выбор зависит от того, нужен ли художественный штрих или фактический контур исходника.
- Canny и Soft Edge / HED — Soft Edge сохраняет более мягкую структуру границ, а Canny даёт тонкую бинарную карту. Они по-разному ограничивают генерацию.
- Canny и Depth — Canny это плоские контуры, Depth — карта глубины, а не готовая трёхмерная модель. Часто комбинируют для архитектуры.
- Canny и Sketch — Sketch (Scribble) принимает грубые наброски рукой, Canny — точные контуры. Они дают разные по подробности условия, но точность следования зависит от модели контроля.
- Canny ControlNet и Canny из OpenCV — OpenCV извлекает границы алгоритмом Canny. ControlNet — обученная сеть, которая использует полученную карту при генерации; это не тот же алгоритм.
Частые ошибки и заблуждения
- «Canny ловит только важные линии». Не различает важные и неважные. Если на фото складки на одежде, тени, текстура стены — они могут попасть в карту. Иногда нужно постобработать (стереть лишнее в Photoshop).
- «Чем больше линий, тем точнее результат». Часто наоборот: «зашумлённая» карта мешает модели, она пытается воспроизвести каждую закорючку. Полезнее оставить линии, действительно важные для задуманной композиции.
- «Canny = чёрно-белая фотография». Нет, это извлечение границ, не оттенков. Из цветной фотографии Canny делает контурную карту, не чёрно-белый снимок.
- «Максимальный strength = идеальный контроль». Нет. Слишком жёсткое условие способно перенести контур буквально и сделать изображение плоским. Рабочий диапазон зависит от модели, карты и желаемой свободы.
- «Canny сохранит личность человека». Карта удерживает контуры, но не кодирует личность. Для узнаваемого портрета одного Canny обычно недостаточно.
Связанные термины
- ControlNet — один из способов использовать контурную карту в генерации.
- Lineart — родственный препроцессор для художественных линий.
- HED / Soft Edge — альтернатива с мягкими краями.
- Sketch / Scribble — для грубых набросков.
- Depth Map — карта глубины, которая может дополнять контроль линий.
- OpenPose — инструмент определения позы; полученная схема может служить отдельным условием генерации.
- OpenCV — библиотека, где Canny используется десятилетиями.
Частые вопросы
Какие пороги Canny выставлять? Универсальных значений нет: интерфейсы используют разные шкалы, а исходники отличаются контрастом. Нижний порог определяет, какие слабые границы могут сохраняться рядом с сильными, верхний — какие считать сильными. Порог отбирает не толщину линии, а величину градиента.
Можно ли использовать свою контурную карту? Да. Если у вас уже есть готовая обводка (рисунок, чертёж, иллюстрация), её можно подать прямо в ControlNet, минуя препроцессор. Формат, толщину линий и фон сверяют с примером для конкретной модели контроля. Для многих Canny-моделей ожидаются светлые линии на чёрном фоне, но произвольная обводка может отличаться от обучающих карт.
Canny работает с FLUX? Только при наличии совместимой модели контроля и поддержки в выбранном интерфейсе. Совпадения слова Canny в названии недостаточно: архитектура базовой модели тоже должна совпадать.
Чем Lineart лучше Canny для иллюстраций? Lineart может лучше отделять рисунок линиями от текстуры исходника. Canny проще и предсказуемее как детектор перепадов яркости. Подходящий вариант виден по самой карте ещё до генерации.
Сколько по времени? Сам Canny обычно заметно легче самой генерации. Дополнительное условие ControlNet увеличивает вычисления и память, а точная разница зависит от модели, размера кадра, числа шагов и реализации.
Можно ли стирать линии в Canny-карте перед генерацией? Да. Например, можно убрать контуры теней и фактуры, которые мешают сохранить основной силуэт. После правки полезно сравнить генерацию с исходной картой: вместе с шумом легко удалить и нужную деталь.
Главное
Canny Edge превращает изображение в карту границ. В ControlNet эта карта удерживает геометрию, пока модель меняет материал, свет и стиль. Метод полезен для упаковки, архитектуры и крупных графических форм, но не гарантирует читаемость букв или точность логотипа. Пороги и силу выбирают по исходной карте и тестовой серии, а лишние линии иногда проще убрать вручную.