画像の編集をしているのですが、画像の細い部分を分割して欲しいのですが、どのようにすればできますか?
具体的には

このような画像を

のように分割、もしくは分割した輪郭を取得したいです。
分割した線を曲線に沿って分割されればベストです。
どのようにすれば分割できますか?
分割の基準がよくわかりません.
(示された例では画像中央上部だけが分割され,他の箇所は分割されていない.分割するかしないかをどうやって決める話ですか?)
この手の処理は非常に難しいです。技術的な難しさもありますが「~をしたい」と思っている本人ですらどういうときにその処理を適用するか否か明確な基準を持つことが難しいためです。
ましてや質問に答える側は質問者の感覚レベルの認識も持てないのです。
質問が悪いと言うよりこの手の問題に共通する課題ですね・・・
複数例が挙がっていたり、細かい方針が提示されていれば答えようはあるかもしれませんが。
とりあえず輪郭追跡処理あたりから入ってみてはどうでしょう?
最終面積が一番大きいところを取得する予定なので、一番分けて欲しいところを画像にしました。。。
画像は目を二値化したもので、黒目の部分だけ抽出したいです。
凹性があるところ?を分割すればいいのではと考えたのですが、白目の頂点のみを取得する方法がわからず分割するという形で質問させていただきました。
> 黒目の部分だけ抽出したい
この手の処理は,視線検知系の話でよく行われるものだと思うので,それ系の文献などを当ってみてはどうでしょうか?
完全に質問と異なる答えになりますが、仮に対象が黒目に限られるなら別のアプローチを検討した方が楽かもしれません。
そもそも今のだと黒目の上の目蓋も取っているっぽいですし、2値化する前の方が情報が多いですので...
黒目は例にすぎず、分割処理が欲しいのでしたら的外れですいません。
私もそれは思いましたが、ネットで調べても瞳が完全に見えている状態のものが多く、瞳が欠けていても瞳を認識するというものがみつかりませんでした。。多少は瞳の範囲からずれていても大丈夫なので、二値化、瞳の範囲を取得、少し縮小すれば大まかな瞳の領域が取得できると考えこの形をとらせていただきました。
他の瞳の領域を取得できる方法があれば教えていただけるとありがたいです。
欲しいのは 黒目or瞳(瞳孔)?
画像の程度次第ですが,黒目(あるいは瞳孔)の輪郭点をある程度取得できれば(それが結構難しいのですが…)楕円フィッティングでそれなりには頑張れるんじゃないかと思います.
昔これ系にちょっと携わった際には,上部の山なりカーブを見つけてそれを足掛かりに黒い部分の幅とかを見て睫毛らへんを捨てるみたいな方向の手法もあったような…(忘れた)
その程度の雑さで良いのであればシンプルな方法だとOpeningでいっそ細い部分を全部消してしまっても良いかもしれません。
勿論精度は落ちます。
汎用かつ厳密にやろうとすると、もう論文読んで下さいレベルの話になるかもしれません。
最終的にやりたい事というのはどういうことなのでしょうか?
顔の画像から瞳の部分だけ抽出したのでしょうか?
欲しいのは黒目の部分です。
黒目の輪郭が難しいですよね。。。
Openigでやってみたらそれっぽい範囲が取得できたので、Openingで進めたいと思います!
(要求される処理結果精度や処理のロバスト性が謎ですね)
2値化だと画像の明るさとかに左右されるので、画像処理だけでなかなか綺麗に瞳の部分だけ抜き出すのは難しそうですね。
任意の画像に対して、精度よくやりたいなら、CNN 使ったほうが良さそうと思いました。
CNNで学習させるという手もあるんですね!
しかし、私の開発環境で他のライブラリを追加する方法がわからず、kerasが入ってなさそうなので諦めます。。。追加する方法がわかればCNNを追加して精度を上げて目の認識をやってみます!!
回答1件
あなたの回答
tips
プレビュー

