スキャンした画像からオブジェクトを抽出しようとしています。白い背景にいくつかのドキュメントがある可能性があり、それらを自動的にトリミングして回転させる必要があります。これはかなり単純な作業のように思えますが、ある時点で行き詰まり、常に悪い結果が得られます。
私はしようとしました:
イメージを 2 値化し、モルフォロジー演算を実行して連結成分を取得します。
膨張および侵食されたバイナリ イメージをマスク コンポーネントとして使用して流域セグメンテーションを実行します。
Canny 検出器を適用し、輪郭を塗りつぶします。
これのどれも私に良い結果をもたらしません。オブジェクトにコントラスト エッジがない場合 (つまり、白い背景の紙)、多くの個別のコンポーネントに分割されます。これらの要素を過度に膨張させて接続すると、バックグラウンド ノイズも拡大し、すべてがごちゃごちゃになります。
たとえば、次の画像があります。
Canny 検出器を適用して輪郭を塗りつぶすと、次のようになります。
ご覧のとおり、コンポーネントは接続されていません。それらは互いに離れすぎているため、適切な量の膨張によって接続することはできません。そして、いくつかの背景ポイントと組み合わせてこのマスクに流域を適用すると、非常に悪い結果が得られます。
一部の画像にノイズがあります:
この特定のケースでは、Canny 検出器によってパスポート全体の輪郭を取得できました。これは、エッジのコントラストが原因です。しかし、しきい値法はここでは機能しません。