Refactor Sobel implementation; Add single-point overload