OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
F変換の理論

目的

このチュートリアルでは、ファジィ変換の基本概念を紹介する。以下を学ぶ:

  • 数学的背景、
  • ファジィの概念を画像処理に適用する方法。

ここで示す説明には基本的な数学の知識が必要である。関連するすべての論文は引用されており、その多くは https://www.researchgate.net/ で参照できる。

はじめに

近年、F変換の理論は多くの方向で精力的に発展してきた。画像処理においては、画像圧縮と削減、画像融合、エッジ検出、画像再構成において成功した応用例がある [226] [72] [291] [224] [223] [297]。F変換は、連続/離散関数を、そのF変換成分からなる有限ベクトルに対応付ける技術である。画像が2引数の強度関数で表される画像処理では、後者のF変換は成分の行列として与えられる。

2次元グレースケール画像 \(I\) のF変換を導入する。これは関数 \(I:[0,M]\times [0,N]\to [0,255]\) として考え、ここで \([0,M]=\{0,1,2,\ldots,M\}; [0,N]=\{0,1,2,\ldots,N\}\) である。画像は集合 \(P\) に属する点(ピクセル)で定義されているものと仮定する。ここで \(P=\{(x,y)\mid x=0,1,\ldots, M;y=0,1,\ldots, N\}\) である。

\(A_0, \dots ,A_m\) および \(B_0, \dots ,B_n\) を基本関数とし、\(A_0, \dots ,A_m : [0,M] \to [0, 1]\) を \([0,M]\) のファジィ分割、\(B_0, \dots ,B_n :[0,N]\to [0, 1]\) を \([0,N]\) のファジィ分割とする。ピクセルの集合 \(P\) は、選択された分割に対して十分に密であると仮定する。これは、すべての \(k\in{0,\dots, m}(\exists x\in [0,M]) \ A_k(x)>0\) に対して、また、すべての \(l\in{0,\dots, n}(\exists y\in [0,N])\ B_l(y)>0\) に対して成り立つことを意味する。

\(F^0\)

-変換

実数からなる \(m\times n\) 行列 \(F^0_{mn}[I] = (F^0_{kl})\) が、すべての \(k=0,\dots,m,\ l=0,\dots,n\) に対して次を満たすとき、これを \(\{A_0, \dots,A_m\}\) および \(\{B_0, \dots,B_n\}\) に関する \(I\) の(離散)F変換と呼ぶ:

\[ F^0_{kl}=\frac{\sum_{y=0}^{N}\sum_{x=0}^{M} I(x,y)A_k(x)B_l(y)}{\sum_{y=0}^{N}\sum_{x=0}^{M} A_k(x)B_l(y)}. \]

係数 \(F^0_{kl}\) は \(F^0\) 変換の成分と呼ばれる。

\(F^1\)

変換

\(F^1\)-変換は [225] で提示された。行列 \(F^1_{mn}[I] = (F^1_{kl}), k=0,\ldots, m, l=0,\ldots, n\) は、\(\{A_k\times B_l\mid k=0,\ldots, m, l=0,\ldots, n\}\) に関する \(I\) の \(F^1\)-変換であり、\(F^1_{kl}\) が対応する \(F^1\)-変換成分である。

\(I\) の \(F^1\) 変換成分は、次の形の線形多項式である

\[ F^1_{kl}(x,y)= c^{00}_{kl} + c^{10}_{kl}(x-x_k) + c^{01}_{kl}(y-y_l), \]

ここで係数は次で与えられる

\[ c_{kl}^{00} =\frac{\sum_{y=0}^{N}\sum_{x=0}^{M} I(x,y)A_k(x)B_l(y)}{\sum_{y=0}^{N}\sum_{x=0}^{M} A_k(x)B_l(y)}, \\ c_{kl}^{10} =\frac{\sum_{y=0}^{N}\sum_{x=0}^{M} I(x,y)(x - x_k)A_k(x)B_l(y)}{\sum_{y=0}^{N}\sum_{x=0}^{M} (x - x_k)^2A_k(x)B_l(y)}, \\ c_{kl}^{01} =\frac{\sum_{y=0}^{N}\sum_{x=0}^{M} I(x,y)(y - y_l)A_k(x)B_l(y)}{\sum_{y=0}^{N}\sum_{x=0}^{M} (y - y_l)^2A_k(x)B_l(y)}. \]

画像処理への応用

F変換の手法は2つのステップを用いる: 直接変換と逆変換。直接変換のステップは前節で説明したとおりであり、逆変換は次のとおりである

\[ O(x,y)=\sum_{k=0}^{m}\sum_{l=0}^{n} F^d_{kl}A_k(x)B_l(y), \]

ここで \(O\) は出力(再構成された)画像、\(d\) はF変換の次数である。実際には、このアルゴリズムは入力画像 \(I\) のF変換成分を計算し、その後成分を \(I\) のサイズに広げる。詳細は [223] を参照。画像処理への応用は2つの異なる観点から捉えることができる。

ピクセルの観点から

ピクセルは1つずつ処理され、それぞれに対して適切な基本関数が見つけられる。それはちょうど4つ、各方向に2つずつとなる。それらの値を集めるために、メモリ上に補助的な構造が必要である。これらの値は、関連するファジィ成分の分子に用いられる。このアプローチの実装では、高速処理(より多くの最適化のため)と線形基本関数を表すキーワード FL を使用する。

Pixel point of view with marked basic functions related to processed pixel.

ファジー成分の観点から

この方法では、画像は規則的な領域に分割される。各領域はカーネルウィンドウを用いて個別に処理される。このアプローチは、理解が容易で、行列ベースの処理であり、並列化が直接的に行える点が利点である。

Fuzzy component point of view with marked basic functions related to processed area.

このアプローチはカーネル \(g\) を用いる。半径 \(h = 2\) の線形の場合を例として示す。

\[ A = (0, 0.5, 1, 0.5, 0) \\ B^T = (0, 0.5, 1, 0.5, 0) \\ g = AB^T=\left( \begin{array}{ccccc} 0 & 0 & 0 & 0 & 0 \\ 0 & 0.25 & 0.5 & 0.25 & 0 \\ 0 & 0.5 & 1 & 0.5 & 0 \\ 0 & 0.25 & 0.5 & 0.25 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ \end{array} \right) \]