Tôi đang thực hiện một số phân tích hậu đại học của một bộ dữ liệu bao gồm một loạt các khung phim bị ô nhiễm bởi một tạo tác định kỳ mạnh mẽ. Tôi muốn loại bỏ vật phẩm này khỏi khung của tôi.
Để dễ dàng vẽ đồ thị, tôi vừa định hình lại mảng M
giá trị pixel của mình [nframes, npixels]
, sau đó lấy trung bình trên tất cả các giá trị pixel để cung cấp cho tôi vectơ 1D m
. Đây là tín hiệu này trông như thế nào trong miền thời gian. Bạn có thể thấy dao động khá rõ ràng trong hình nhỏ được phóng to.
Sau đó tôi thực hiện một biểu đồ bằng cách lấy Fm = rfft(m)
và vẽ theo abs(Fm)**2
tần số. Tôi thấy một đỉnh rất sắc nét ở ~ 1,5Hz:
Cũng như tính tuần hoàn theo thời gian, dường như cũng có một thành phần không gian yếu hơn đối với vật phẩm này, vì ở giá trị tần số cực đại chính xác dường như có một sự thay đổi trơn tru theo pha trên trục x của khung hình của tôi, do đó, các pixel trên bên phải có xu hướng trễ pixel ở bên trái:
Là một cách tiếp cận mạnh mẽ, tôi đã thử chỉ lọc từng pixel trong miền thời gian bằng bộ lọc notch tập trung vào 1,5Hz. Tôi đã sử dụng bộ lọc Butterworth theo thứ tự 4 với tần số tới 1,46 và 1,52Hz (Tôi không rành về thiết kế bộ lọc, vì vậy tôi chắc chắn có thể có nhiều lựa chọn phù hợp hơn).
Đây là tín hiệu pixel trung bình trông như thế nào sau khi lọc:
Và biểu đồ tương ứng:
Bộ lọc notch thực hiện rất tốt công việc giảm vật phẩm, nhưng về cơ bản nó trông giống như một hình sin cố định thuần túy, tôi không thể không nghĩ rằng tôi có thể làm tốt hơn là chỉ làm giảm phần không gian tần số đó.
Ý tưởng ban đầu (rất ngây thơ) của tôi là làm một việc như:
- Lấy tần số, pha và biên độ dao động từ phổ Fourier cho mỗi pixel trong phim
- Tái tạo dao động trong miền thời gian
- Trừ nó ra khỏi khung phim
Tôi nhận ra đây không phải là điều mà mọi người thường làm, vì sự can thiệp thường không quá thuần túy và tạm thời, nhưng tôi tự hỏi liệu nó có ý nghĩa gì trong trường hợp của tôi không?
Dữ liệu
Ngăn xếp TIFF 16 bit đầy đủ (~ 2GB không nén)
Phiên bản 8 bit bị suy giảm không gian (~ 35 MB không nén)
x
, sau đó tôi lấy Fx = rfft(x)
và lấy sức mạnh làabs(Fx)**2