OPENCVでは、ScharrフィルターはSobelオペレーターの動作と併せて存在します。 Sobelカーネルが3の場合、結果はより明白なエラーを生成する可能性があります。この問題に応じて、OPENCVはScharR関数を提供します。この関数はサイズ3のカーネルのみをターゲットにし、計算速度はSOBEL関数と同じくらい高速であり、結果はより正確ですが、ノイズ抵抗はSOBEL関数ほど良くありません。
scharrフィルターを使用して、x方向またはy方向の画像の違いを計算すると、そのパラメーター変数はsobelと同じです。
機能:IMGPROC.SCHARR(MAT SRC、MAT DST、INT DDEPTH、INT DX、INT DY、DOUBLE SCALE、DOUBLE DELTA、INT BORDERTYPE)
パラメーター説明:
SRC:ソース画像
DST:検出結果画像
ddepth:出力画像の深さ
DX:X方向の差異順
dy:y方向の違い順
スケール:スケーリングファクター
デルタ:結果が出力画像に保存される前にオプションのデルタ値、デフォルトは0です
borderType:境界モード、デフォルトのborder_default
サンプルコード:
public static void main(string [] args){system.loadLibrary(core.native_library_name); MAT SRC = IMGCODECS.IMREAD( "f://2011031213205880528.jpg"); mat dst = src.clone(); mat dstx = src.clone(); mat dsty = src.clone(); imgproc.gaussianblur(src、dst、new size(3、3)、0); IMGPROC.CVTCOLOR(DST、DST、IMGPROC.COLOR_RGB2GRAY); imgproc.scharr(dst、dstx、-1、1、0、1、0、core.border_default); imgcodecs.imwrite( "f://dstx.jpg"、dstx); imgproc.scharr(dst、dsty、-1、0、1、1、0、core.border_default); imgcodecs.imwrite( "f://dsty.jpg"、dsty); core.addweighted(dstx、0.5、dsty、0.5、0、dst); imgcodecs.imwrite( "f://dst.jpg"、dst); }ソース画像:
x方向のscharr:
y方向のscharr:
勾配をマージした後:
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。