Source code for monalisa.image._im_laplacian
"""Port of src/image123/bmImLaplacian.m."""
import numpy as np
from monalisa._mat import imsize_ints as _ims
from monalisa._mat import msize
from monalisa.image._im_reshape import im_reshape
from monalisa.image._laplace import laplacian, offsets
[docs]
def im_laplacian(argIm):
"""Discrete Laplacian (linear-offset neighbours, see ``mex/_laplace``), single precision."""
argSize = msize(argIm)
argIm, imDim, imSize = _ims(im_reshape(argIm, nargout=3))
off = offsets(imSize[:imDim] if imDim > 1 else (imSize[0],))
def lap(part):
return laplacian(np.ascontiguousarray(np.ravel(np.asarray(part, dtype=np.float32), order="F")), off)
argIm = np.asarray(argIm)
if np.iscomplexobj(argIm):
out = (lap(argIm.real) + 1j * lap(argIm.imag)).astype(np.complex64)
else:
out = lap(argIm)
return np.reshape(out, argSize, order="F")