0

GitリポジトリのGPUImageを使用して、画像にいくつかのフィルターを適用しています。エッジ検出フィルター(特にCannyEdgeDetectionFilterを使用しています)が黒い背景に白いエッジをペイントしていることに気付きました。誰もが白い背景にその黒いエッジを作成する方法を知っています-またはそれを行う別のフィルター(そしてそれがそのライブラリから必要な唯一のフィルターなので、重くはありません)。

トニーに感謝します。

4

2 に答える 2

1

GPUImageColorInvertFilterはGPUImageで利用可能であり、必要なことを実行する必要があります。

于 2013-02-18T13:18:19.207 に答える
0

ギャレットが示唆しているように、そのフィルターの色を単純に反転させて、目的の結果を得ることができます。ただし、これによりチェーンに別のフィルターが導入され、処理速度が低下する可能性があります。

GPUImageSketchFilterを使用して、Sobelエッジ検出フィルターの逆を取得できます。2つのフィルターの唯一の違いは、フラグメントシェーダーの最後から2番目の行です。ここで、返される色は、エッジ強度だけでなく、1.0からエッジ強度を引いたものです。

ここでは、Cannyエッジ検出についても同じことができますが、GPUImageWeakPixelInclusionFilterを、シェーダーの最後の行に次のようなものに置き換える必要があるだけです。

 gl_FragColor = vec4(vec3(1.0 - sumTest * pixelTest), 1.0);

このフィルターの残りのすべてのコードと、Cannyエッジ検出フィルターのすべてのコードをコピーして貼り付け、GPUImageWeakPixelInclusionFilterの代わりにカスタムフィルタークラスを使用するようにCannyフィルターを変更して、カスタムCannyエッジを指定できます。自分の名前を検出します。

キャニーエッジ検出フィルターの使用に関する1つの警告:4ステップのキャニープロセス全体を実行するため、ソーベルエッジ検出フィルターがより多くのメモリを使用するよりもはるかに低速です。しきい値処理されたエッジ検出フィルターの1つを使用すると、はるかに低いコストでCannyの結果の妥当な近似値を取得できます。

于 2013-02-18T20:29:43.687 に答える