人間として、背景と前景を区別するのに苦労する場合があります。したがって、あなたが望むことを正しく行う方法は確かにありません。あなたはOCRについて言及しているので、実際にはテキスト以外のものをすべて排除したいと思っていると思います。これは実際には問題を簡単にするものではないので、私が実際に想定しているのは、他のオブジェクトに対して非常に対照的なオブジェクトを保持したいということです (たとえば、前景と背景、または白い背景に黒いテキストなど)。繰り返しますが、そのための完璧な方法はありません。
したがって、この回答で行うことは、タスクに役立つ可能性のある簡単な方法を提示することだけです. この方法は、統計的に最適であるため、既製の形態学的ツールと二値化のための大津法を組み合わせたものです。その結果、注目に値する可能性のある地域が得られます。これらの結果を他の多くの異なる分析と組み合わせる必要があることに注意してください.優れたOCRシステムは、これらの直接的なアプローチをはるかに超えています.
方法: 1) 画像をグレースケールに変換します (色には関心がありませんが、別の方法で確実に使用できます)。2) h-ドーム変換を使用して、無関係な最大値を削除します。3) 形態学的勾配を計算します。4) otsu による 2 値化; 5) エリア開口部で小さなオブジェクトを削除します。無関係な最大値を削除することは、あなたの仕事にとって重要です。なぜなら、悪いカメラと悪いカメラのフラッシュと経験の浅い写真家の組み合わせによって引き起こされるかなり恐ろしい領域を持つことができるからです。H ドーム変換は形態学的再構成に基づいているため、ライブラリに後者があり、前者がない場合、それを実装するのは簡単です (そうでない場合は、後者を効率的に実装する方法を学ぶことができます)。離散画像の形態学的勾配は、適用するのが非常に簡単な方法であり、照明が不十分な場合でもうまく機能する傾向があります。ローカルメソッドだからです。Otsu による結果のしきい値は、最も強いエッジを保持します (ノイズやその他のマイナーな機能が含まれる可能性があります)。これらすべての前に、ガウス平滑化を行うことができます。これは、ノイズ抑制の初期ツールとして機能する可能性があります。小さな特徴は、エリア開口部によって容易に除去されます。Matlab では、これは次のように実行できます。
f = rgb2gray(imread(yourimage));
se = strel('square', 3);
g = imhmax(f, 50); % h-dome with h = 50
g = imdilate(g, se) - imerode(g, se); % morphological gradient
h = im2bw(g, graythresh(g)); % graythresh applies Otsu's method
w = bwareaopen(h, 50);
50 ピクセルより小さいオブジェクトは無関係であると仮定します (小さいテキストの場合は常にそうであるとは限りません)。
例のw
画像は次のとおりです。

これらの出力は、テキストを探すべき場所、つまり接続されたコンポーネントの内部を示します。