アプリ版:「スタンプのみでお礼する」機能のリリースについて

とあるプログラムをしている者です。

Canny法を用いてエッジ抽出を試みているのですが、
ヒステリシス閾値で用いる高い閾値と低い閾値の適切な決定法がわかりません。

最終的には抽出の対象となる画像ごとに適切な閾値を設定し
処理をかけたいと考えています。

しかし、対象とする画像の背景と抽出したいオブジェクトの色の濃度が
画像によって大きく変化するため、従来の決定法では対応しきれていない現状です。

そこで、Canny法に用いる適切な閾値の決定法がありましたら
ぜひご教授頂きたいと思います

よろしくお願いします

A 回答 (1件)

解析というのは解析者の目的ありきです。



何かしらのフィルタをかける場合に何が「適切な決定法になる」かは
機械ではなく、人間がどう決めるか(どういう結果をよしとするか)次第なので


例えば、PhotoShopのような画像処理系統のソフトを作りたい場合は
閾値等の決定は
PhotoShopが実際にそうであるように
その都度結果画像をプレビューしながらトラックバーや数値をアップダウンさせられるコントロールなどでユーザーが任意に行える
という方法にするとよいでしょうし、かなり現実的だと思います。

(「中でもこういう感じの画像を処理するのが得意としたい目的のアプリ」という大よその方向性があれば、デフォルト値とかは実際にやってみて決めればいいのではないでしょうか)


決まった画像を読み込み独自のシェーダを使う、ゲームなどの場合であれば
それはもう自分の満足のいくように実験で決めるということになるかと。(画像ごとに変えるなら閾値の情報も保存しておくようにするなど)


もし、そういうことをかなりのレベルでほとんど自動化したいのであれば、自分の目的に合った「学習アルゴリズム」や「学習データ」(過去にどういう画像はどう処理されたかの履歴から、任意の統計学的手法で計算するプログラム)などを作成する必要が出てきそうです。度合い次第では、結構大変かもしれません。



実際のフローでは
もしご自身で細かいとこまで書かれている場合は

Canny法の流れは
ガウシアン → Sobel → 細線化 → 2値化

ということで

仮にヒステリシス閾値
での2つのパラメーターだけいじればいいなら
細線化までの情報を一端持っておいて
パラメータ変更時にそれにフィルタかけるだけにすれば、ほとんど無駄がないと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!