私はイメージのフィルタのシーケンスを複製しようとしています。このためには、Filter2Dカーネルとガウスカーネルを含むカーネルを作成する必要があります。通常はgaussianBlurを適用し、次にfilter2Dを適用します。このため一般的なコマンドは次のとおりです。1Dガウスカーネルを使用してFilter2Dでカスタム2Dカーネルを行う方法
kernel2D= Mat::ones(kernelSize, kernelSize, CV_32F) *(1/(float)(kernelSize*kernelSize)), Point(-1, -1);
GaussianBlur(src, resultO, Size(kernelSize, kernelSize), sigma);
filter2D(resultO, resultO, resultO.depth(), kernel2D, Point(-1, -1),0,BORDER_DEFAULT);
だから、最初に私はマット::ものを使用してgetGaussianKernel方法、および1Dカーネルを使用して、ガウスカーネルを作成します。私は上記のコードと同じ結果を得るために、この2つのカーネルを多重化しようとしています。私はこのプロセスを行うと
sigma = 0;
Mat mKernelGauss1 = getGaussianKernel(kernelSize, sigma, CV_32F);
mKernel2D = Mat::ones(1, kernelSize, CV_32F) *(1/(float)(1*kernelSize)), Point(-1, -1);
mResultKernel = mKernelGauss1 * mKernel2D;
、このように、私はkernelSizeが、結果としてkernelSizeカーネルのxは取得、それでは私は私のイメージでは、このカーネル(mResultKernel)を適用することができます。
filter2D(src, resultO, src.depth(), mResultKernel, Point(-1, -1), 0, BORDER_DEFAULT);
私の問題があります私が作成するこのカーネルは、gaussianBlurとfilter2Dを連続して実行するのと同じ結果を私に与えません。上記のように、私のイメージを畳み込み、1つの2Dカーネルだけを使ってfilter2D関数を適用するには、このメソッドに従う必要があります。
参考にしていただきありがとうございますが、私は既にfilter2Dを使用して画像を畳み込んでいます。カーネルを生成するだけです。それが私の問題です。 –