В этой статье реализованы функции fftshift и ifftshift на основе OpenCv ( OpenCvSharp ).
Функция fftshift перемещает компонент спектра сигнала с нулевой частотой в центр массива, по существу меняя местами данные первого и третьего квадрантов.
Ifftshift выполняет противоположную операцию, которая по существу является блоком данных во втором и четвертом квадрантах.
В OpenCV нет этих двух функций, если вам нужно их использовать, вам нужно реализовать их самостоятельно.
Код реализации выглядит следующим образом:
#region 方法 fftshift
/// <summary>
/// 方法 fftshift
/// </summary>
/// <param name="src"></param>
/// <returns></returns>
public static Mat fftshift(Mat src)
{
Mat dst = new Mat(src.Size(), src.Type());
int x0 = src.Cols / 2;
int x1 = src.Cols - x0;
int y0 = src