人間から見て"納得感"のある画像処理をしようと思うと、領域分割(セグメント化)をしたくなる場合が多々あります。
たとえば、人物と背景とを別々に処理したい、とか、人の肌の部分だけに処理をしたい、とか。
OpenCVではそういった「領域分割」を行ってくれる関数が何種類か用意されていますが、vImageでもそういう機能があるのかないのか、調べてみました。
OpenCVにある領域分割系の関数
vImageのドキュメントを調べる前に、メソッド名とか説明にあるキーワードを見逃さないように、まずOpenCVでの画像領域分割系関数を洗い出してみました。
- 画像ピラミッドを用いた領域分割: cvPyrSegmentation
- 平均値シフト法による領域分割: cvPyrMeanShiftFiltering
- Watershedアルゴリズムによる画像の領域分割: cvWatershed
- 輪郭の検出と描画: cvFindContours
ざっと調べてみてひっかかったOpenCVの機能はこの辺り。
結論
ここからリンクしてあるAppleのvImage関連ドキュメントを全部(9本!)漁りましたが、結論として、今のところvImageには領域分割系の機能はないようです。(勘違いしてたらすいません!)
ローレベルの機能を組み合わせて自前で処理を実装するか、おとなしくOpenCVを使うか。。