> params(sigma, sigma_d, step_size, "hessianOfGaussian");     params.permuteLikewise(array);     ConvolutionOptions<N> opt(params().filterWindowSize(window_size));          if(roi != python::object())     {         typedef typename MultiArrayShape<N>::type Shape;         Shape start = array.permuteLikewise(python::extract<Shape>(roi[0])());         Shape stop  = array.permuteLikewise(python::extract<Shape>(roi[0])());         opt.subarray(start, stop);         res.reshapeIfEmpty(array.taggedShape().resize(stop-start).setChannelDescription(description),                 "hessianOfGaussian(): Output array has wrong shape.");     }     else     {         res.reshapeIfEmpty(array.taggedShape().setChannelDescription(description),                 "hessianOfGaussian(): Output array has wrong shape.");     }          {         PyAllowThreads _pythread;         hessianOfGaussianMultiArray(srcMultiArrayRange(array), destMultiArray(res), opt);     }     return res; }  