2

Canny Edge Detection を使用して画像上のドキュメントの境界線を見つける Windows ストア用のアプリケーションを作成しています。コーナーが見つかったら、この画像をトリミングできる必要があります。WriteableBitmapExtension メソッドを使用して四角形を切り取ることはできますが、問題は四角形になることはめったになく、むしろ四角形になることです。

それができるかもしれないAforgeと呼ばれるものについて読みましたが、Silverlight/WinRTをサポートしていないようです。これは OpenGL で可能であることはわかっていますが、おそらくアプリケーションの大部分を変更する必要があります。代替手段はありますか?

4

1 に答える 1

1

トリミングする領域の Blit と n アルファ マスクを使用して、WriteableBitmapEx で実装できます。キャニー エッジ検出の結果を使用して動的にマスクを作成するだけです。マスク ビットマップで、保持するすべてのピクセルのアルファ値が 255 であり、トリミングするピクセルのアルファ値が 0 であることを確認します。次に、元の画像で Blit メソッドを使用し、生成されたアルファ マスク ビットマップをパラメーターとして指定し、BlendMode.Alpha も同様に指定します。これにより、元の画像のサイズが実際に縮小されることはありませんが、少なくとも不要なピクセルはなくなります。アルファ マスキングの前に、エッジ検出結果から x と y の最小値、最大値を使用して既に長方形を切り取ることができました。このようにしてサイズも小さくなり、ボーナスとしてアルファ マスキングが高速になります。

于 2015-07-23T08:20:50.237 に答える