We implemented the image processing method both in the spatial domain and frequency domain. For instance, we developed the codes not only for auto-contrast, histogram matching, spatial filters such as Gauss, Laplace, LoG, the weighted median in the spatial domain; but also for 2d DFT, 2d DCT based on FFT, filters in the frequency domain. We also applied morphological operations, Ostu, watershed, Hough transform for line detection, Canny edge detection, Harris corner dectcttion, and scale-invariant feature transform (SIFT) methods in Python and C++ for image processing.
A quaternion is a four-element vector that can be used to encode any rotation in a 3D coordinate system. Quaternions avoid "gimbal lock" which can result when, for example in pitch/yaw/roll rotational systems, the pitch is rotated 90° up or down, so that yaw and roll then correspond to the same motion, and a degree of freedom of rotation is lost.