ここでの作業には、フィルターは適切なツールではありません。フィルタは、画像内のすべてのピクセルに、ピクセルごとにカラーシフトアルゴリズムを適用します。
これは、白に変えたいピクセルに完全にユニークなものがある場合に適しています。たとえば、除去したい背景が、画像の他の部分では発生しなかった非常に狭い色範囲にあった場合です。これは、グリーンスクリーン/ブルースクリーンの撮影で使用される手法であり、保持したい画像領域のどこにもその緑または青の色が発生しない場合にのみ機能します。
しかし、コメントの1つで述べているように、削除したいグレーレベルは背景に固有ではないため、これを行うことはできません。そのため、これらのピクセルを選択するフィルターを適用すると、ピクセルのピクセルにも影響を与える可能性があります。スキャンされた主題。
本当に必要なのは、関心のある領域を選択し、その領域だけにフィルターを適用する方法です。これにはopenCVを使用できます。実際、それはあなたの結果を一度に達成することができる機能を持っています:
http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=floodfill#int
floodFill(InputOutputArray image, //image to process
Point seedPoint, //starting pixel
Scalar newVal, //New value of the repainted domain pixels
Rect* rect, //optional output param (you won't need it)
Scalar loDiff, //max lower brightness/colour diff to select
Scalar upDiff, //max upper brightness/colour diff to select
int flags) //you want FLOODFILL_FIXED_RANGE
この関数はseedPointから始まります。これは、削除する背景の灰色の一部になることを保証できる任意のピクセルである必要があります。(0,0)はあなたのために働くかもしれません。次に、隣接するピクセルを調査します。これらのピクセルが十分に類似している場合は、ROI配列に含めます。結果の配列は接続された領域です。背景の灰色が均一にloDiffとupDiffの間にあり、被写体のスキャンにこの範囲に収まらない定義済みのエッジがある場合、結果が得られます。すべての背景ピクセルを選択してnewVal(白)に再マッピングします。