Đối với mỗi thứ nguyên, các chỉ mục của mẫu phải từ -n/2 ... 0 ... n/2 -1, vì vậy nếu thứ nguyên là lẻ, trung tâm ở giữa. Nếu kích thước là đồng đều, hãy căn giữa sao cho trước 0 mới, bạn có một mẫu nhiều hơn sau mẫu mới 0
Ví dụ: -4, -3, -2, -1, 0, 1, 2, 3 cho chiều rộng/chiều cao 8 hoặc -3, -2, -1, 0, 1, 2, 3 cho chiều rộng/chiều cao là 7 .
FFT tương đối so với giữa, ở quy mô của nó có các điểm âm.
Trong bộ nhớ, các điểm là 0 ... n-1, nhưng FFT xử lý chúng dưới dạng -ceil (n/2) ... tầng (n/2), trong đó 0 là -ceil (n/2) và n-1 là tầng (n/2)
Ma trận nhận dạng là ma trận số không với 1 trong vị trí 0,0 (tâm - theo số ở trên). (Trong miền không gian.)
Trong miền tần số, ma trận nhận dạng phải là hằng số (tất cả giá trị thực 1 hoặc 1/(N * M) và tất cả các giá trị tưởng tượng 0).
Nếu bạn không nhận được kết quả này, ma trận xác định có thể cần đệm khác nhau (sang trái và xuống thay vì xung quanh tất cả các bên) - điều này có thể phụ thuộc vào việc triển khai FFT.
Trung tâm mỗi thứ nguyên riêng biệt (đây là chỉ số định tâm, không thay đổi bộ nhớ thực).
Bạn có thể cần phải dán hình ảnh (sau khi định tâm) vào toàn bộ công suất 2 trong mỗi kích thước (2^n * 2^m trong đó n không phải bằng m).
Pad liên quan đến vị trí 0,0 của FFT (đến giữa, không góc) bằng cách sao chép pixel hiện có sang hình ảnh lớn hơn mới, sử dụng chỉ mục dựa trên trung tâm ở cả hình ảnh nguồn và đích (ví dụ: 0,0) (0,0), (0,1) đến (0,1), (1, -2) đến (1, -2) đến (1, -2))
Giả sử FFT của bạn sử dụng các ô dấu phẩy động thông thường và không phức tạp, hình ảnh phức tạp phải có kích thước 2 * ceil (2/n) * 2 * ceil (2/m) ngay cả khi bạn không cần toàn bộ sức mạnh của 2 (vì nó có một nửa mẫu, nhưng mẫu rất phức tạp).
Nếu hình ảnh của bạn có nhiều kênh màu, trước tiên bạn phải định hình lại kênh để kênh quan trọng nhất trong thứ tự pixel phụ, thay vì ít quan trọng nhất. Bạn có thể định hình lại và pad trong một lần để tiết kiệm thời gian và không gian.
Đừng quên FFTSHIFT sau IFFT. (Để hoán đổi phần tư.)
Kết quả của IFFT là 0 ... n-1. Bạn phải lấy điểm ảnh sàn (n/2) + 1..n-1 và di chuyển chúng trước 0 ... tầng (n/2).
Điều này được thực hiện bằng cách sao chép pixel sang hình ảnh mới, sao chép tầng (n/2) +1 sang vị trí bộ nhớ 0, tầng (n/2) +2 đến vị trí bộ nhớ 1, ..., n-1 đến tầng vị trí bộ nhớ (n/2), sau đó 0 đến vị trí bộ nhớ ceil (n/2), 1 đến vị trí bộ nhớ ceil (n/2) +1, ..., tầng (n/2) vào bộ nhớ- vị trí n-1.
Khi bạn nhân trong miền tần số, hãy nhớ rằng các mẫu phức tạp (một ô thực tế sau đó một tế bào tưởng tượng), do đó bạn phải sử dụng phép nhân phức tạp.
Kết quả có thể cần chia cho N^2 * M^2 trong đó N là kích thước của n sau khi đệm (và tương tự như vậy đối với M và m). - Bạn có thể nói điều này bằng cách (xem xét giá trị của miền tần số của ma trận nhận dạng, so sánh kết quả với đầu vào.)
Có bất kỳ câu trả lời nào giúp bạn tìm ra câu hỏi của mình không? – trumpetlicks