その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

vImageで領域分割/セグメント化/輪郭抽出/ラベリング

人間から見て"納得感"のある画像処理をしようと思うと、領域分割(セグメント化)をしたくなる場合が多々あります。


たとえば、人物と背景とを別々に処理したい、とか、人の肌の部分だけに処理をしたい、とか。


OpenCVではそういった「領域分割」を行ってくれる関数が何種類か用意されていますが、vImageでもそういう機能があるのかないのか、調べてみました。

OpenCVにある領域分割系の関数

vImageのドキュメントを調べる前に、メソッド名とか説明にあるキーワードを見逃さないように、まずOpenCVでの画像領域分割系関数を洗い出してみました。

  • 画像ピラミッドを用いた領域分割: cvPyrSegmentation
  • 平均値シフト法による領域分割: cvPyrMeanShiftFiltering
  • Watershedアルゴリズムによる画像の領域分割: cvWatershed
  • 輪郭の検出と描画: cvFindContours

ざっと調べてみてひっかかったOpenCVの機能はこの辺り。

結論

ここからリンクしてあるAppleのvImage関連ドキュメントを全部(9本!)漁りましたが、結論として、今のところvImageには領域分割系の機能はないようです。(勘違いしてたらすいません!)


ローレベルの機能を組み合わせて自前で処理を実装するか、おとなしくOpenCVを使うか。。