データ構造アルゴリズムの種類
6×6行列( 1. )の合計面積表( 2. )を使用して、その値のサブ長方形を合計します。各色のスポットは、その色の長方形内の合計を強調表示します。
合計 領域テーブルは、 グリッドの長方形のサブセット内の値の合計を迅速かつ効率的に生成するための データ構造 と アルゴリズム です。 画像処理分野では、 積分画像 とも呼ばれます。 1984年に フランク・クロウによって ミップマップ で使用するために コンピュータグラフィックス に導入されました 。 コンピュータビジョンでは、ルイス [1] によって普及し 、「積分画像」という名前が付けられ、 2001年に ビオラ・ジョーンズの物体検出フレームワークで広く使用されました。歴史的に、この原理は多次元確率分布関数の研究、つまりそれぞれの 累積分布関数 から2D(またはND)確率(確率分布の下の領域)を計算する際に非常によく知られています 。 [2]
アルゴリズム
名前が示すように、合計面積表の任意の点( x 、 y )の値は、( x 、 y )の上と左にあるすべてのピクセルの合計です。 [3] [4]
ここで、は( x 、 y )
のピクセルの値です。
私
(
x
、
ええ
)
=
∑
x
′
≤
x
ええ
′
≤
ええ
私
(
x
′
、
ええ
′
)
{\displaystyle I(x,y)=\sum _{\begin{smallmatrix}x'\leq x\\y'\leq y\end{smallmatrix}}i(x',y')}
私
(
x
、
ええ
)
{\displaystyle i(x,y)}
合計面積表は、画像上の1回のパスで効率的に計算できます。合計面積表の( x 、 y ) の値は次のように表されます。 [5]
(合計行列は左上隅から計算されることに注意してください)
私
(
x
、
ええ
)
=
私
(
x
、
ええ
)
+
私
(
x
、
ええ
−
1
)
+
私
(
x
−
1
、
ええ
)
−
私
(
x
−
1
、
ええ
−
1
)
{\displaystyle I(x,y)=i(x,y)+I(x,y-1)+I(x-1,y)-I(x-1,y-1)}
合計面積表データ構造/アルゴリズムでの合計計算の説明
合計面積テーブルが計算されると、任意の長方形領域上の強度の合計を評価するには、領域のサイズに関係なく、正確に 4 つの配列参照が必要になります。つまり、右の図の表記では、 A = ( x 0 , y 0 ) 、 B = ( x 1 , y 0 ) 、 C = ( x 0 , y 1 ) 、 D = ( x 1 , y 1 )であり、 A 、 B 、 C 、 および D で囲まれた長方形上の i ( x 、 y ) の合計は 次のようになります。
∑
x
0
<
x
≤
x
1
ええ
0
<
ええ
≤
ええ
1
私
(
x
、
ええ
)
=
私
(
だ
)
+
私
(
あ
)
−
私
(
B
)
−
私
(
C
)
{\displaystyle \sum _{\begin{smallmatrix}x_{0}}x\leq x_{1}\\y_{0}}y\leq y_{1}\end{smallmatrix}}i(x,y)=I(D)+I(A)-I(B)-I(C)}
拡張機能
この方法は連続領域にも自然に拡張される。 [2]
この方法は高次元画像にも拡張できます。 [6] 長方形の角が 内に ある場合 、長方形に含まれる画像値の合計は、
における積分画像 、 画像の次元
である式で計算されます。この例では 、表記は 、 、 、 に対応します 。 たとえば、 神経画像処理では、 ボクセル またはタイムスタンプ付きボクセルを
使用する場合、画像の次元は またはになります。
x
p
{\displaystyle x^{p}}
p
{\displaystyle p}
{
0
、
1
}
d
{\displaystyle \{0,1\}^{d}}
∑
p
∈
{
0
、
1
}
d
(
−
1
)
d
−
‖
p
‖
1
私
(
x
p
)
{\displaystyle \sum _{p\in \{0,1\}^{d}}(-1)^{d-\|p\|_{1}}I(x^{p})}
私
(
x
)
{\displaystyle I(x)}
x
{\displaystyle x}
d
{\displaystyle d}
x
p
{\displaystyle x^{p}}
d
=
2
{\displaystyle d=2}
あ
=
x
(
0
、
0
)
{\displaystyle A=x^{(0,0)}}
B
=
x
(
1
、
0
)
{\displaystyle B=x^{(1,0)}}
C
=
x
(
1
、
1
)
{\displaystyle C=x^{(1,1)}}
だ
=
x
(
0
、
1
)
{\displaystyle D=x^{(0,1)}}
d
=
3
{\displaystyle d=3}
d
=
4
{\displaystyle d=4}
この方法は、Phanらの研究[7] のように高次積分画像に拡張されており、 画像内の局所ブロックの標準偏差(分散)、歪度、尖度を迅速かつ効率的に計算するために2つ、3つ、または4つの積分画像を提供している。詳細は以下に示すとおりである。
ブロックの
分散 または 標準偏差 を計算するには、次の 2 つの積分画像が必要です。
分散は次のように求められます
。 ブロック の との合計をそれぞれ および とし
ます。 および は、積分画像によって簡単に計算されます。次に、分散方程式を次のように操作します。
ここで 、 および です 。
私
(
x
、
ええ
)
=
∑
x
′
≤
x
ええ
′
≤
ええ
私
(
x
′
、
ええ
′
)
{\displaystyle I(x,y)=\sum _{\begin{smallmatrix}x'\leq x\\y'\leq y\end{smallmatrix}}i(x',y')}
私
2
(
x
、
ええ
)
=
∑
x
′
≤
x
ええ
′
≤
ええ
私
2
(
x
′
、
ええ
′
)
{\displaystyle I^{2}(x,y)=\sum _{\begin{smallmatrix}x'\leq x\\y'\leq y\end{smallmatrix}}i^{2}(x',y')}
ヴァール
(
バツ
)
=
1
ん
∑
私
=
1
ん
(
x
私
−
μ
)
2
。
{\displaystyle \operatorname {Var} (X)={\frac {1}{n}}\sum _{i=1}^{n}(x_{i}-\mu )^{2}.}
S
1
{\displaystyle S_{1}}
S
2
{\displaystyle S_{2}}
あ
B
C
だ
{\displaystyle ABCD}
私
{\displaystyle I}
私
2
{\displaystyle I^{2}}
S
1
{\displaystyle S_{1}}
S
2
{\displaystyle S_{2}}
ヴァール
(
バツ
)
=
1
ん
∑
私
=
1
ん
(
x
私
2
−
2
μ
x
私
+
μ
2
)
=
1
ん
[
∑
私
=
1
ん
x
私
2
−
2
∑
私
=
1
ん
μ
x
私
+
∑
私
=
1
ん
μ
2
]
=
1
ん
[
∑
私
=
1
ん
x
私
2
−
2
∑
私
=
1
ん
μ
x
私
+
ん
μ
2
]
=
1
ん
[
∑
私
=
1
ん
x
私
2
−
2
μ
∑
私
=
1
ん
x
私
+
ん
μ
2
]
=
1
ん
[
S
2
−
2
S
1
ん
S
1
+
ん
(
S
1
ん
)
2
]
=
1
ん
[
S
2
−
S
1
2
ん
]
{\displaystyle {\begin{aligned}\operatorname {Var} (X)&={\frac {1}{n}}\sum _{i=1}^{n}\left(x_{i}^{2}-2\mu x_{i}+\mu ^{2}\right)\\[1ex]&={\frac {1}{n}}\left[\sum _{i=1}^{n}x_{i}^{2}-2\sum _{i=1}^{n}\mu x_{i}+\sum _{i=1}^{n}\mu ^{2}\right]\\[1ex]&={\frac {1}{n}}\left[\sum _{i=1}^{n}x_{i}^{2}-2\sum _{i=1}^{n}\mu x_{i}+n\mu ^{2}\right]\\[1ex]&={\frac {1}{n}}\left[\sum _{i=1}^{n}x_{i}^{2}-2\mu \sum _{i=1}^{n}x_{i}+n\mu ^{2}\right]\\[1ex]&={\frac {1}{n}}\left[S_{2}-2{\frac {S_{1}}{n}}S_{1}+n\left({\frac {S_{1}}{n}}\right)^{2}\right]\\[1ex]&={\frac {1}{n}}\left[S_{2}-{\frac {S_{1}^{2}}{n}}\right]\end{aligned}}}
μ
=
S
1
/
n
{\displaystyle \mu =S_{1}/n}
S
2
=
∑
i
=
1
n
x
i
2
{\textstyle S_{2}=\sum _{i=1}^{n}x_{i}^{2}}
平均 ( ) と分散 ( ) の推定と同様に、それぞれ画像の 1 乗と 2 乗の積分画像 (つまり ) が必要ですが、上記と同様の操作を画像の 3 乗と 4 乗 (つまり ) に対して行うことで、歪度と尖度を取得できます。 [7]ただし、F Shafait ら [8 ] が述べているように、上記の方法では、32 ビット整数を使用する場合に高次の積分画像で整数オーバーフローが発生するという重要な実装の詳細
に留意する必要があります。
μ
{\displaystyle \mu }
Var
{\displaystyle \operatorname {Var} }
I
,
I
2
{\displaystyle I,I^{2}}
I
3
(
x
,
y
)
,
I
4
(
x
,
y
)
{\displaystyle I^{3}(x,y),I^{4}(x,y)}
実装に関する考慮事項
オーバーフロー なしで予想される最大の合計に対応するために、合計のデータ型は元の値に使用されたデータ型とは異なっており、それよりも大きい必要がある場合があります。浮動小数点データの場合、 補正された合計 を使用してエラーを減らすことができます 。
参照
参考文献
^ Lewis, JP (1995). 高速テンプレートマッチング . Proc. Vision Interface . pp. 120–123.
^ ab Finkelstein, Amir; neeratsharma (2010). 「累積分布関数の値の合計による二重積分」。 Wolfram デモンストレーション プロジェクト 。
^ Crow, Franklin (1984). 「テクスチャ マッピング用の合計領域テーブル」。SIGGRAPH '84: コンピュータ グラフィックスとインタラクティブ技術に関する第 11 回年次会議の議事録 。pp . 207–212。doi :10.1145/800031.808600。
^ Viola, Paul; Jones, Michael (2002). 「堅牢なリアルタイム物体検出」 (PDF) . International Journal of Computer Vision .
^ BADGERATI (2010-09-03). 「コンピュータビジョン - インテグラルイメージ」. computersciencesource.wordpress.com . 2017年2月13日 閲覧 。
^ Tapia, Ernesto (2011年1月). 「高次元積分画像の計算に関する注記」. パターン認識レター . 32 (2): 197–201. Bibcode :2011PaReL..32..197T. doi :10.1016/j.patrec.2010.10.007.
^ ab Phan, Thien; Sohoni, Sohum; Larson, Eric C.; Chandler, Damon M. (2012 年 4 月 22 日)。「パフォーマンス分析に基づく画像品質評価の高速化」。2012 IEEE Southwest Symposium on Image Analysis and Interpretation (PDF) 。pp . 81–84。CiteSeerX 10.1.1.666.4791 。doi : 10.1109 /SSIAI.2012.6202458。hdl :11244 / 25701。ISBN 978-1-4673-1830-3 . S2CID 12472935。
^ Shafait, Faisal; Keysers, Daniel; M. Breuel, Thomas (2008 年 1 月). Yanikoglu, Berrin A.; Berkner, Kathrin (編). 「積分画像を使用したローカル適応しきい値処理手法の効率的な実装」 (PDF) . Electronic Imaging . Document Recognition and Retrieval XV. 6815 : 681510–681510–6. Bibcode :2008SPIE.6815E..10S. CiteSeerX 10.1.1.109.2748 . doi :10.1117/12.767755. S2CID 9284084.
外部リンク
講義ビデオ
積分画像アルゴリズムの理論の紹介
Wolfram Demonstrations Project による積分画像アルゴリズムの連続バージョンのデモンストレーション