興味深い問題があります。つまり、そのように; mex 関数内で std::memcpy 関数を使用しようとしており、MATLAB 内でその mex 関数をそのように呼び出しています。
I2 = b_filter(I);
画像全体をコピーするとうまくいきます。
plhs[0] = mxCreateDoubleMatrix(mxGetM(plhs[0]), mxGetN(plhs[0]), mxREAL);
memcpy(mxGetPr(plhs[0]), mxGetPr(prhs[0]), sizeof(double) *mxGetM(plhs[0]) * mxGetN(plhs[0]));
しかし、画像の一部をコピーしようとすると
plhs[0] = mxCreateDoubleMatrix(100, 100, mxREAL);
memcpy(mxGetPr(plhs[0]), mxGetPr(prhs[0]), sizeof(double) * 100 * 100);
正しい画像部分は得られませんが、無意味なピクセル値が得られます。
それで、ここで何が起こっているのですか?