Canny Edge
canny edge — карта контуров для контроля композиции
Canny Edge — алгоритм извлечения контуров изображения, изобретённый Джоном Канни в 1986-м. В Stable Diffusion через ControlNet Canny используется как «обводка», на которой модель строит новую картинку. Хорошо подходит для переноса конкретных линий: контуры зданий, силуэты предметов, шрифт. В отличие от Depth (объём) и OpenPose (поза), Canny управляет точно плоскостной геометрией линий.
Коротко
Коротко. Canny Edge превращает изображение в карту контрастных границ. Совместимая ControlNet использует её как геометрическую подсказку: крупные линии и силуэты сохраняются лучше, а стиль и детали можно менять. Такой контроль подходит для эскизов, предметов и архитектуры, но не гарантирует точный текст или узнаваемое лицо.
Что это такое
Иллюстратор делает серию упаковок для пива. Дизайнер уже нарисовал контурный набросок: бутылка, этикетка, текст, орнамент. Нужны 5 разных стилевых вариантов: винтаж, минимализм, скандинавский, готика, ретро-фьюче.
Canny извлекает контуры из эскиза и передаёт их совместимой ControlNet. Генерации сильнее держатся за силуэт и расположение крупных линий, но не обязаны повторять мелкий текст или геометрию пиксель в пиксель.
Дизайнер получает несколько управляемых вариантов и проверяет, где карта сохранила форму, а где вместе с полезным контуром закрепила лишний шум.
Canny — классический алгоритм компьютерного зрения, опубликованный в 1980-х. Он не зависит от генеративной модели: сначала извлекает границы, а уже затем совместимый модуль управления использует полученную карту.
- Перевод эскизов в финальные иллюстрации.
- Перерисовка логотипов и упаковок в новых стилях.
- Контроль архитектуры зданий.
- Сохранение общей геометрии надписи перед финальной ручной вёрсткой.
- Перенос композиции с минимальной свободой.
Как это работает
Алгоритм Canny проходит через изображение в 4 шага:
- Размытие Гауссом. Уменьшает шум, чтобы алгоритм не реагировал на пиксельный мусор.
- Поиск градиентов. В каждом пикселе считается, насколько резко меняется яркость. Резкие переходы = края.
- Не-максимальное подавление. Из «толстых» градиентных полос выбирается самая центральная линия.
- Двойной порог + связность. Слабые края, не связанные с сильными, отбрасываются. Получается чистая контурная карта.
Параметры Canny (управляют чувствительностью):
- Low threshold — нижний порог. Чем ниже, тем больше слабых линий ловит.
- High threshold — верхний. Чем выше, тем меньше шумных линий проходит.
Порогов два: нижний помогает продолжать слабые границы, верхний отмечает уверенные. Рабочие числа зависят от контраста и масштаба исходника, поэтому их подбирают по самой карте: нужные линии должны остаться, а шум и фактура — уйти.
В нодовом интерфейсе цепочка выглядит так: загрузка изображения → препроцессор Canny → совместимая модель контроля → сэмплер. Названия нод и файлов зависят от установленного пакета и архитектуры базовой модели.
Пример на практике
Дизайнер рестайлит логотип. Клиент дал старый логотип — кружка с надписью «Cofee Bar» (с опечаткой). Нужно перерисовать в трёх стилях: акварель, неон, металл-гравюра. Композиция и буквы должны остаться.
Workflow:
- Photoshop: исправляет опечатку → «Coffee Bar». Сохраняет PNG.
- ComfyUI: загружает картинку, применяет Canny Preprocessor (порог 100/200). Получает контурную карту: кружка + текст белыми линиями на чёрном.
- Запуск 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 — 3D-объём. Часто комбинируют для архитектуры.
- Canny и Sketch — Sketch (Scribble) принимает грубые наброски рукой, Canny — точные контуры. Sketch допускает «свободу», Canny требует точности.
- Canny ControlNet и Canny из OpenCV — алгоритм один и тот же. Просто в SD он встроен в pipeline ControlNet'а.
Частые ошибки и заблуждения
- «Canny ловит только важные линии». Не различает важные и неважные. Если на фото складки на одежде, тени, текстура стены — всё попадёт в карту. Иногда нужно постобработать (стереть лишнее в Photoshop).
- «Чем больше линий, тем точнее результат». Часто наоборот: «зашумлённая» карта мешает модели, она пытается воспроизвести каждую закорючку. Чище контуры → лучше результат.
- «Canny = чёрно-белая фотография». Нет, это извлечение границ, не оттенков. Из цветной фото Canny делает контурную карту, не чёрно-белый снимок.
- «Максимальный strength = идеальный контроль». Нет. Слишком жёсткое условие способно перенести контур буквально и сделать изображение плоским. Рабочий диапазон зависит от модели, карты и желаемой свободы.
- «Canny сохранит личность человека». Карта удерживает контуры, но не кодирует личность. Для узнаваемого портрета одного Canny обычно недостаточно.
Связанные термины
- ControlNet — общая система, в которую встроен Canny.
- Lineart — родственный препроцессор для художественных линий.
- HED / Soft Edge — альтернатива с мягкими краями.
- Sketch / Scribble — для грубых набросков.
- Depth Map — комплементарный 3D-контроль.
- OpenPose — другой ControlNet для людей.
- OpenCV — библиотека, где Canny используется десятилетиями.
Частые вопросы
Какие пороги Canny выставлять? По умолчанию 100/200. Для тонких эскизов — 50/150 (больше тонких линий). Для чётких контуров — 200/300 (только жирные границы).
Можно ли использовать свою контурную карту? Да. Если у вас уже есть готовая обводка (рисунок, чертёж, иллюстрация), её можно подать прямо в ControlNet, минуя препроцессор. Главное — белые линии на чёрном фоне.
Canny работает с FLUX? Только при наличии совместимой модели контроля и поддержки в выбранном интерфейсе. Совпадения слова Canny в названии недостаточно: архитектура базовой модели тоже должна совпадать.
Чем Lineart лучше Canny для иллюстраций? Lineart может лучше отделять рисунок линиями от текстуры исходника. Canny проще и предсказуемее как детектор перепадов яркости. Подходящий вариант виден по самой карте ещё до генерации.
Сколько по времени? Сам Canny обычно заметно легче генеративной части pipeline. Дополнительное условие ControlNet увеличивает вычисления и память, а точная разница зависит от модели, размера кадра, числа шагов и реализации.
Можно ли стирать линии в Canny-карте перед генерацией? Можно и нужно! Часто полезно открыть карту в Photoshop, чёрной кистью убрать лишние линии (мусор от теней, текстуры), оставить только важное. Результат получится чище.
Главное
Canny Edge превращает изображение в карту границ. В ControlNet эта карта удерживает геометрию, пока модель меняет материал, свет и стиль. Метод полезен для упаковки, архитектуры и крупных графических форм, но не гарантирует читаемость букв или точность логотипа. Пороги и силу выбирают по исходной карте и тестовой серии, а лишние линии иногда проще убрать вручную.