領域分割 — 画像を「意味のまとまり」へ切り分ける

「この画素はどの物体に属するのか」。画像を意味のあるまとまり=領域へ切り分ける領域分割(セグメンテーション)は、認識・計測・医用画像処理などあらゆる画像理解の土台です。閾値処理と大津の方法、領域成長、k-means、watershed — 古典手法それぞれの発想を、動かしながら掴みます。

1. 「領域」とは何か — 分割問題の定式化

領域分割とは、画像の全画素を互いに素な連結領域 R1, …, Rn に分けることです。形式的には、ある均質性述語 P を決めて、「各領域の内部では P(Ri) = 真」「隣接する2領域を合併すると P(Ri ∪ Rj) = 偽」となる分割を求めます。

問題の本質は、何をもって「均質」とみなすかにあります。輝度が近いこと・色が近いこと・テクスチャが似ていること・同じ物体に属すること — 均質性の定義を変えるたびに、必要なアルゴリズムも変わります。アプローチは大きく2系統です。

2. 最も素朴で、最も深い — 閾値処理と大津の方法

明るい物体が暗い背景に載っている画像では、ヒストグラムが二峰性になります。谷のあたりに閾値 t を置き、t 以上を前景・未満を背景とすれば分割完了 — ですが、その「谷」を人手でなく自動で決めたい。これに答えるのが大津の方法(Otsu's method)です。

閾値 t で全画素を2クラスに分けたとき、クラス0(暗)とクラス1(明)の画素数比率を ω0, ω1、平均輝度を μ0, μ1 とすると、クラス間分散 σB2 が定義できます。大津の方法は、これを最大にする t を 0〜255 の全探索で選びます。

σB2(t) = ω0(t) ω1(t) [μ0(t) − μ1(t)]2,    t* = argmaxt σB2(t) 2クラスの「重み付き平均の隔たり」が最大になる閾値を選ぶ。ヒストグラムだけから O(256) で計算できる
閾値処理と大津の方法 — クラス間分散が最大になる場所
左=二峰性の合成画像(明るい物体+暗い背景)、中央=閾値 t での二値化結果、右=ヒストグラム(灰)とクラス間分散 σB2(t)(オレンジの曲線)。白線が現在の t、緑の破線が大津の最適閾値 t*。スライダーで t を動かすと二値化が崩れ、「大津の閾値へ」で σB2 の頂上へアニメします。
POINT — なぜクラス間分散「最大化」なのか 全分散は「クラス内分散+クラス間分散」に厳密に分解でき、全分散は t によらず一定。つまりクラス間分散の最大化はクラス内分散の最小化と同値です。「各クラスの中では散らばりが小さく、クラス同士は離れている」二値化を選んでいることになります。判別分析と同じ発想です。

3. 種から育てる — 領域成長

閾値処理は画像全体を一律に切るため、照明ムラや複数物体には弱い。そこで「この画素は確実に対象だ」というシード(種)画素から出発し、隣接画素のうち条件を満たすものを波紋のように取り込んでいくのが領域成長(region growing)です。

取り込み条件の代表は「シード近傍の平均輝度との差が許容値 T 以内」。条件を満たす画素がフロンティア(成長前線)に加わり、そこからさらに隣を調べる — 幅優先探索そのものです。

領域成長 — シードから波紋状に広がる(画像クリックでシード変更)
青=取り込まれた領域、オレンジ=成長中のフロンティア、白十字=シード。明るい物体Aと中間輝度の物体Bは、中間の明るさの「橋」でつながっています。T = 25 ではAだけで止まりますが、T を 45 以上にすると橋を伝ってBへ漏れ出し、120 以上では背景まで飲み込みます。
注意 — 漏れ(leakage)は領域成長の宿命 物体同士がわずかな中間輝度でつながっていると、許容値を少し上げただけで隣の物体へ流れ込みます。しかも取り込み基準を「成長中の領域の平均との差」にすると、平均が徐々にずれて漏れが加速するドリフトも起きます。実用では許容値の他に、エッジ強度で成長を堰き止める・形状制約を課すなどの安全弁を併用します。

4. 色で塗り分ける — k-means クラスタリング

カラー画像では、各画素を RGB の3次元ベクトルとみなし、色空間でのクラスタリングとして分割する手が使えます。代表が k-means:画像の全画素を k 個のクラスタに分け、各画素を最も近いクラスタ中心(代表色)に割り当てる、中心を割り当ての平均で更新する、を収束まで繰り返します。

J = Σc=1..k Σx∈Cc ‖x − μc‖2 → 最小化 x は画素の色ベクトル、μc はクラスタ c の中心色。割り当てと中心更新の反復は J を単調に減らす
k-means による減色と領域分割 — 中心色が反復で動く
左=カラー合成画像、右=各画素を最寄りのクラスタ中心色で塗った結果。下の色票が現在のクラスタ中心で、反復のたびに色が動き、移動量がほぼ 0 になったら収束です。k を変えると分割の粒度が、「再初期化」を押すと初期値依存性(毎回少し違う結果に落ちること)が観察できます。
POINT — 色クラスタリングは「連結性」を保証しない k-means は色空間だけを見るので、空と水面の映り込みのように離れた場所が同じ領域になり得ます。画素座標 (x, y) を特徴ベクトルに加えて空間的まとまりを持たせたのが SLIC スーパーピクセル。また距離を測る色空間も、RGB より知覚的に均等な L*a*b* が好まれます。

5. 地形に水を注ぐ — watershed の直感

watershed(分水嶺法)は、画像の輝度(実用では輝度勾配の大きさ)を地形の標高とみなします。各盆地の底から水位を上げていくと、水たまりが盆地ごとに育ち、別々の水たまりが合流しそうになった稜線にダム=分水嶺を築く。水没が終わったときのダムの線が領域境界です。

watershed の断面図 — 水位を上げてダムが立つ場所を見る
輝度プロファイルを断面の地形とみなした1次元版。水位を上げると盆地ごとに色違いの水たまりが育ち、稜線を越える水位ではそこにダム(オレンジ)が立ちます。実際の watershed は2次元の勾配画像でこれを行い、ダムの線がそのまま領域境界になります。ノイズの小盆地ごとに領域ができる過分割が弱点で、実用ではシードを指定するマーカー付き watershed が使われます。

6. まとめ — 古典からDNNへ

一歩先へ — DNNセグメンテーションの時代 現代の主役は畳み込み・Transformer ベースのDNNセグメンテーションです。画素ごとにクラスを予測する FCN・U-Net・DeepLab(セマンティック)、物体個体まで区別する Mask R-CNN(インスタンス)、両者を統合したパノプティック、そしてプロンプトで任意の物体を切り出す SAM。ただし「均質なものをまとめ、境界で切る」という古典の発想は、損失関数や後処理(CRF、watershed による個体分離)の中に今も生きています。