Свертка изображения
Примените к изображению собственное ядро свертки. Введите матрицу весов 3x3 или 5x5, при необходимости укажите масштаб, на который делится результат, и смещение, которое прибавляется после этого. Инструмент применит фильтр к каждому цветовому каналу. Создавайте фильтры повышения резкости, размытия, выделения границ, тиснения и смазывания в движении, проверяйте ядра из учебников или экспериментируйте с обработкой изображений без написания кода.
Часто задаваемые вопросы
Как ввести ядро?
Введите 9 чисел для ядра 3x3 или 25 чисел для ядра 5x5, разделяя их пробелами, запятыми или переносами строк. Вводите числа построчно, начиная с левого верхнего угла. Значения по умолчанию 0 -1 0 / -1 5 -1 / 0 -1 0 соответствуют классическому ядру повышения резкости. Каждый вес должен быть от -1000 до 1000.
Для чего нужен масштаб?
Взвешенная сумма для каждого пикселя делится на масштаб, после чего прибавляется смещение. При значении по умолчанию 0 инструмент использует сумму ядра, если она положительна, и 1 в противном случае. Это сохраняет общую яркость при размытии и повышении резкости. Вы можете указать любой масштаб до 1000, чтобы самостоятельно нормализовать ядро.
Для чего нужно смещение?
Смещение от -255 до 255 прибавляется к каждому результату после масштабирования. Ядра выделения границ и тиснения часто дают значения около нуля, поэтому смещение 128 переводит их в средний серый, на фоне которого видны и положительные, и отрицательные отклики. Значения за пределами от 0 до 255 обрезаются.
С каких полезных ядер начать?
Для блочного размытия используйте девять единиц, для размытия по Гауссу — 1 2 1 / 2 4 2 / 1 2 1, для выделения границ — -1 -1 -1 / -1 8 -1 / -1 -1 -1, а для тиснения — -2 -1 0 / -1 1 1 / 0 1 2. Чтобы усилить размытие, используйте ядро 5x5 из двадцати пяти единиц.
Фильтр применяется ко всем каналам?
Ядро обрабатывает каждый цветовой канал отдельно, поэтому красный, зеленый и синий фильтруются одинаково. Перед фильтрацией альфа-канал временно отделяется, а после нее добавляется обратно, поэтому прозрачность не размывается и не повышается резкость. Результат сохраняется в формате PNG.
Почему результат черный или белый?
Если сумма весов ядра равна нулю и смещение не задано, однородные области становятся черными, поскольку их отклик равен нулю. Если сумма весов большая и положительная, а масштаб слишком мал, всё обрезается до белого. Используйте автоматический масштаб или добавьте смещение 128, чтобы увидеть весь диапазон откликов.
Меняется ли размер изображения?
Нет, ширина и высота результата совпадают с исходными. Пиксели у границ фильтруются с использованием доступных соседних пикселей. Перед фильтрацией изображения, у которых одна из сторон превышает 4000 пикселей, уменьшаются до допустимого размера.
Какие форматы можно загружать?
Поддерживаются изображения JPEG, PNG, GIF, WebP, TIFF и AVIF размером до 5 MB; у анимированных файлов используется первый кадр. Отфильтрованное изображение можно скачать в формате PNG без потери качества.
Почему доступны только ядра 3x3 и 5x5?
Этих двух размеров достаточно почти для всех классических фильтров, и они позволяют быстро обрабатывать даже большие изображения. Для более сильного размытия лучше использовать специальный инструмент размытия с разделяемым ядром Гаусса. Если нужен более широкий эффект, примените инструмент дважды.
Какой движок выполняет свертку?
Инструмент использует операцию convolve из библиотеки sharp, построенной на базе libvips. Расчет точно учитывает введенные вами веса, а для одинаковых исходных данных результат всегда будет одним и тем же.