すでに述べたように、これは重要なタスクです。最終的に、それは次のように最も簡単に表現できます: ピクセルNで構成される画像 (または実際の写真の場合はシーン) が与えられた場合、それらをMレイヤーにどのように割り当てることができますか?
セグメンテーションについては、ピクセルおよびピクセルのグループのどのプロパティが、それらが属するレイヤーに関して「ヒント」を与えるかについて、これに持ち込むことができる事前知識がすべてです(そして、私はこの言葉を忠告的に使用します!)。
画像の色だけを使用する最も単純なケースを考えてみてください。これらの 5 つの「レイヤー」を生成できます (色相値 0、24、90、117、および 118 の場合)。

このコードで(python/opencvで)
import cv
# get orginal image
orig = cv.LoadImage('cakephp.png')
# show original
cv.ShowImage("orig", orig)
# convert to hsv and get just hue
hsv = cv.CreateImage(cv.GetSize(orig), 8, 3)
hue = cv.CreateImage(cv.GetSize(orig), 8, 1)
sat = cv.CreateImage(cv.GetSize(orig), 8, 1)
val = cv.CreateImage(cv.GetSize(orig), 8, 1)
cv.CvtColor(orig, hsv, cv.CV_RGB2HSV)
cv.Split(hsv,hue,sat,val,None)
#cv.ShowImage("hue", hue)
# loop to find how many different hues are present...
query = cv.CreateImage(cv.GetSize(orig), 8, 1)
result = cv.CreateImage(cv.GetSize(orig), 8, 1)
for i in range(0,255):
cv.Set(query,i)
cv.Cmp(query,hue,result,cv.CV_CMP_EQ)
# if a number of pixels are equal - show where they are
if (cv.CountNonZero(result)>1000): # <-what is signficant?
cv.ShowImage(str(i),result)
cv.SaveImage(str(i)+".png",result)
cv.WaitKey(-1)
しかし、ここでも、マスクに属するピクセル数の観点から何が「重要」であるかを説明する必要があります (いくつかの色を見逃す可能性がある範囲で)。代わりに似たような色をクラスター化することもできますが、クラスターはどのくらいの密度で有意になりますか? それが単なる純粋な色ではなく、質感のあるものだったとしたら、これをどのように説明できるでしょうか? または、ある層が別の層の一部である、またはその前にあるという推論についてはどうでしょうか? または、最終的には、一部のレイヤーは人間が「文字」と呼んでいるように見えるため、おそらくすべて関連しているはずです...
セグメンテーションにおけるコンピューター ビジョンの研究の多くは、一般に、この問題を取り上げ、この事前知識を効果的にエンコードして適用できるフレームワーク内で改善しようとしています...