このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

<feConvolveMatrix>

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。

<feConvolveMatrix>SVG のフィルタープリミティブで、行列畳み込みフィルター効果を適用します。畳み込みとは、入力画像のピクセルと隣接するピクセルを組み合わせて、結果の画像を生成する処理です。畳み込みを利用することで、ぼかし、エッジ検出、シャープ化、エンボス加工、ベベル加工など、さまざまな画像操作を実現できます。

行列畳み込みは、n × m の行列(畳み込みカーネル)に基づいており、入力画像内の指定されたピクセル値が、その近傍のピクセル値とどのように組み合わされて結果のピクセル値が生成されるかを記述するものです。各結果ピクセルは、対応するソースピクセルとその近傍のピクセルにカーネル行列を適用することで決定されます。指定されたピクセルそれぞれの色値に適用される基本的な畳み込みの式は、次のとおりです。

colorX,Y=i=0orderY1j=0orderX1sourcextargetX+j,ytargetY+ikernelMatrixorderXj1,orderYi1divisor+biasalphax,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" は、order 属性の X および Y 値を表し、それ以外にも targetXtargetYkernelMatrixdivisor、および 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

画像の 2 行目 2 列目の色値に注目してみましょう(ソースピクセルの値は 120 です)。最も単純な場合(入力画像のピクセルグリッドがカーネルのピクセルグリッドと完全に一致している場合)を仮定し、属性 divisortargetXtargetY についてデフォルト値を使用すると、結果として得られる色値は次のようになります。

(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 色空間 の色成分を処理します。color-interpolation-filters を使用することで、代わりに sRGB を使用することもできます。

使用コンテキスト

カテゴリーフィルター構成要素
許可されている内容任意の数、任意の順序の以下の要素。
<animate><set>

属性

DOM インターフェイス

この要素は SVGFEConvolveMatrixElement インターフェイスを実装しています。

SVG

html
<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>

結果

仕様書

仕様書
Filter Effects Module Level 1
# feConvolveMatrixElement

ブラウザーの互換性

関連情報