研究で高速で視差マップから手前の物体のみを自動で抽出したかったので、思いつきだけで領域分割をするプログラムを作りました。
ぱっと思い浮かんだ簡単なアルゴリズムはヒストグラムの山の部分を切り取ってくる手法。もう少し具体的に言うとヒストグラムからある閾値以上の輝度が密集している部分を物体として分割するアルゴリズム。
ヒストグラムを作るプログラムは私の個人ライブラリに既にあったので、それを使ってすぐにこの手法を実装できると思っていたのですが、山であると判断するためのヒストグラムの高さの閾値の設定や、輝度の密集度の閾値をどう定義するかというところで結構悩みました。
結局、閾値に関しては画像によりけりというところがあり、様々な画像に対して自動で最適な閾値を見つけるのは結構難しそうでした。最終的に自動でというのはやめて、以前から開発しているオリジナル動画編集ソフトのプラグインとして作成することでパラメータを変えたらインタラクティブに結果がプレビューされるようにして、ユーザが最適な閾値を容易にみつけられるようにしました。
GUIはこんな感じです。
以下の画像はこの領域分割プログラムのテスト結果です。上が元画像で下がこのプラグインで手前の物体を抽出した結果です。
ただ島になっている輝度を抜き出しているだけなので、通常のカラー画像や連続的に繋がっている画像にはまったく効果はありませんが、深度マップや視差マップのようにある程度物体ごとに同じ輝度が集中している画像にはそれなりに効果があります。
輝度の連続性+領域の連続性も考慮したらもっと精細な領域分割ができそうですが、今必要なものはおおまかな分類だけなので、とりあえず速度重視でこのままで研究を進めようと思います。
修士論文の締め切りが迫っているこの時期にまだ研究用のプログラム作って実験をしているというのはかなり遅れていると思います。正月は研究&論文作成の日々になりそうです。
ぱっと思い浮かんだ簡単なアルゴリズムはヒストグラムの山の部分を切り取ってくる手法。もう少し具体的に言うとヒストグラムからある閾値以上の輝度が密集している部分を物体として分割するアルゴリズム。
ヒストグラムを作るプログラムは私の個人ライブラリに既にあったので、それを使ってすぐにこの手法を実装できると思っていたのですが、山であると判断するためのヒストグラムの高さの閾値の設定や、輝度の密集度の閾値をどう定義するかというところで結構悩みました。
結局、閾値に関しては画像によりけりというところがあり、様々な画像に対して自動で最適な閾値を見つけるのは結構難しそうでした。最終的に自動でというのはやめて、以前から開発しているオリジナル動画編集ソフトのプラグインとして作成することでパラメータを変えたらインタラクティブに結果がプレビューされるようにして、ユーザが最適な閾値を容易にみつけられるようにしました。
GUIはこんな感じです。
以下の画像はこの領域分割プログラムのテスト結果です。上が元画像で下がこのプラグインで手前の物体を抽出した結果です。
ただ島になっている輝度を抜き出しているだけなので、通常のカラー画像や連続的に繋がっている画像にはまったく効果はありませんが、深度マップや視差マップのようにある程度物体ごとに同じ輝度が集中している画像にはそれなりに効果があります。
輝度の連続性+領域の連続性も考慮したらもっと精細な領域分割ができそうですが、今必要なものはおおまかな分類だけなので、とりあえず速度重視でこのままで研究を進めようと思います。
修士論文の締め切りが迫っているこの時期にまだ研究用のプログラム作って実験をしているというのはかなり遅れていると思います。正月は研究&論文作成の日々になりそうです。