Spec-Zone.ru › SVG

<feConvolveMatrix>

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с ⁨июля 2015⁩ года.

  • Подробнее
  • Полная таблица совместимости
  • Отправить отзыв

Примитив фильтра <feConvolveMatrix> SVG применяет эффект матричной свёртки. Свёртка объединяет пиксели входного изображения с соседними пикселями, чтобы получить результирующее изображение. С помощью свёрток можно выполнять множество операций обработки изображений, включая размытие, обнаружение границ, повышение резкости, тиснение и создание рельефа.

Матричная свёртка основана на матрице размером n на m (ядре свёртки), которая описывает, как значение заданного пикселя входного изображения объединяется со значениями соседних пикселей для получения результирующего значения пикселя. Каждый результирующий пиксель определяется применением матрицы ядра к соответствующему исходному пикселю и его соседним пикселям. Базовая формула свёртки, применяемая к каждому цветовому значению заданного пикселя:

colorX,Y=∑i=0orderY−1∑j=0orderX−1sourcex−targetX+j,y−targetY+i⋅kernelMatrixorderX−j−1,orderY−i−1divisor+bias⋅alphax,y\left(color\right)_{X , Y} = \frac{\sum_{i = 0}^{orderY - 1} \sum_{j = 0}^{orderX - 1} \left(source\right)_{x - targetX + j , y - \mathit{targetY} + i} \cdot \left(kernelMatrix\right)_{orderX - j - 1, orderY - i - 1}}{divisor} + bias \cdot \left(alpha\right)_{x , y}

где «orderX» и «orderY» обозначают значения X и Y атрибута order, а остальные переменные относятся к атрибутам targetX, targetY, kernelMatrix, divisor и bias.

Обратите внимание, что в приведённых выше формулах значения матрицы ядра применяются таким образом, что матрица ядра поворачивается на 180 градусов относительно исходного и результирующего изображений. Это соответствует теории свёртки, описанной во многих учебниках по компьютерной графике.

Для примера предположим, что у вас есть входное изображение размером 5 на 5 пикселей со следующими значениями цвета для одного из цветовых каналов:

0    20  40 235 235
100 120 140 235 235
200 220 240 235 235
225 225 255 255 255
225 225 255 255 255

и вы задаёте ядро свёртки размером 3 на 3 следующим образом:

1 2 3
4 5 6
7 8 9

Рассмотрим значение цвета во второй строке и втором столбце изображения (значение исходного пикселя — 120). Если предположить простейший случай (сетка пикселей входного изображения идеально совмещена с сеткой пикселей ядра) и использовать значения по умолчанию для атрибутов divisor, targetX и targetY, результирующее значение цвета будет следующим:

(9*0   + 8*20  + 7*40 +
 6*100 + 5*120 + 4*140 +
 3*200 + 2*220 + 1*240) / (9+8+7+6+5+4+3+2+1)

Как и другие примитивы фильтров, по умолчанию этот элемент обрабатывает цветовые компоненты в цветовом пространстве linearRGB цветовом пространстве. Чтобы использовать sRGB, можно задать атрибут color-interpolation-filters.

Контекст использования

Категории Элемент — примитив фильтра
Допустимое содержимое Любое количество следующих элементов в любом порядке:
<animate>, <discard>, <set>

Атрибуты

  • in
  • order
  • kernelMatrix
  • divisor
  • bias
  • targetX
  • targetY
  • edgeMode
  • kernelUnitLength
  • preserveAlpha

Интерфейс DOM

Этот элемент реализует интерфейс SVGFEConvolveMatrixElement.

Пример

>

SVG

<svg
  width="200"
  height="200"
  viewBox="0 0 200 200"
  xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <filter id="emboss">
      <feConvolveMatrix
        kernelMatrix="3 0 0
                      0 0 0
                      0 0 -3" />
    </filter>
  </defs>

  <image
    href="mdn.svg"
    x="0"
    y="0"
    height="200"
    width="200"
    filter="url(#emboss)" />
</svg>

Результат

Спецификации

Спецификация
Модуль эффектов фильтров, уровень 1>
# feConvolveMatrixElement>

Совместимость с браузерами

Компьютер Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
feConvolveMatrix 6 12 3 15 6 18 4 14 6 1.0 4.4 6
bias 6 79 3 15 6 18 4 14 6 1.0 4.4 6
divisor 6 79 3 15 6 18 4 14 6 1.0 4.4 6
edgeMode 6 79 3 15 6 18 4 14 6 1.0 4.4 6
in 6 12 3 15 6 18 4 14 6 1.0 4.4 6
kernelMatrix 6 12 3 15 6 18 4 14 6 1.0 4.4 6
kernelUnitLength 6 79 3 15 6 18 4 14 6 1.0 4.4 6
order 6 79 3 15 6 18 4 14 6 1.0 4.4 6
preserveAlpha 6 79 3 15 6 18 4 14 6 1.0 4.4 6
targetX 6 79 3 15 6 18 4 14 6 1.0 4.4 6
targetY 6 79 3 15 6 18 4 14 6 1.0 4.4 6

См. также

  • Атрибуты примитивов фильтров SVG
  • <filter>
  • <animate>
  • <set>
  • <feBlend>
  • <feColorMatrix>
  • <feComponentTransfer>
  • <feComposite>
  • <feDiffuseLighting>
  • <feDisplacementMap>
  • <feFlood>
  • <feGaussianBlur>
  • <feImage>
  • <feMerge>
  • <feMorphology>
  • <feOffset>
  • <feSpecularLighting>
  • <feTile>
  • <feTurbulence>
  • Руководство по SVG: эффекты фильтров

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feConvolveMatrix

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API