Làm thế nào tôi có thể tự động xác định và loại bỏ một tần số cơ bản và tất cả các sóng hài của nó?


7

Tôi có một số dữ liệu kính hiển vi bị ô nhiễm bởi một tạo tác nhịp tim mà tôi muốn xóa. Dữ liệu bao gồm một chuỗi hình ảnh thời gian lớn được chụp ở ~ 60Hz.

Đây là một clip ví dụ nhỏ ở dạng GIF:

gif

Tôi đã lấy cường độ pixel trung bình theo thời gian và tính toán biểu đồ bằng phương pháp của Welch:

nhập mô tả hình ảnh ở đây

Như bạn có thể thấy có một đỉnh sắc nét ở ~ 1,8Hz có khả năng tương ứng với nhịp tim (~ 108 nhịp / phút). Ngoài ra còn có một loạt các đỉnh điều hòa ở bội số nguyên là 1,8Hz. Nhịp tim chính xác có thể thay đổi từ tập dữ liệu này sang tập dữ liệu khác, nhưng tôi có thể chỉ định một phạm vi hợp lý về mặt sinh học như được hiển thị bởi khu vực bóng mờ trên biểu đồ.

Những gì tôi muốn có thể làm là:

  1. Tự động phát hiện tần số cơ bản tương ứng với nhịp tim và tất cả các sóng hài của nó
  2. Lọc dữ liệu để loại bỏ cơ bản và tất cả các sóng hài.

Hiện tại tôi có thể giải quyết điểm 1 rất thô sơ bằng cách tìm đỉnh lớn nhất trong biểu đồ, sau đó nhân nó với 1,2,...,N Ở đâu N là số lượng đỉnh sóng hài ước tính, nhưng tôi chắc chắn rằng phải có một phương pháp tốt hơn so với hack này.

Về điểm 2, tôi đã bắt gặp câu hỏi này trong đó đề cập đến việc sử dụng bộ lọc lược để loại bỏ một cơ bản và tất cả các hài của nó. Đây có phải là phương pháp tốt nhất để sử dụng? Một cân nhắc quan trọng là tôi sẽ phải áp dụng bộ lọc cho từng khung thời gian pixel trong một mảng lớn, vì vậy một phương pháp tính toán hiệu quả sẽ rất được mong đợi.

Dữ liệu mẫu

  • Tôi đã tải lên một khoảng thời gian 1D ví dụ về giá trị pixel có .csvđịnh dạng ở đây .
  • Tôi cũng đã thêm một mẫu 1000 khung hình (được phân tách theo không gian 2: 1) trong một .mattệp nén ở đây

2
Giả sử rằng chúng ta đang nói về một chuỗi các hình ảnh kính hiển vi dưới dạng một hình ảnh hoạt hình, liệu có cơ hội nào để xem tài liệu đó không? Có thể có một số phương pháp đơn giản và chính xác hơn dựa trên tín hiệu đó nếu có sự kết hợp không gian trung bình trên các vật phẩm. Giảm giá trị pixel trung bình sau đó sẽ loại bỏ thông tin có giá trị.
Jazzmaniac

@Jazzmaniac Tôi đã thêm một GIF hiển thị một clip nhỏ từ bộ dữ liệu mẫu - chắc chắn có một số kết hợp không gian địa phương.
ali_m 16/2/2015

@Jazzmaniac Tôi cũng đã tải lên một chuỗi khung mẫu - Tôi có thể cung cấp thêm dữ liệu ví dụ nếu nó hữu ích, nhưng bản thân các ngăn xếp thô quá lớn để tải lên.
ali_m 16/2/2015

1
Bạn có thể sử dụng phương pháp phát hiện / ước tính cao độ (âm nhạc) để ước tính tần số cơ bản.
hotpaw2

1
@Jazzmaniac Đúng là tạo tác nhịp tim rất tinh tế đối với mắt người, nhưng tôi không thực sự quan tâm nhiều đến việc khung hình trông như thế nào - Tôi quan tâm đến những thay đổi cục bộ tinh vi hơn về cường độ mà nhịp tim là vấn đề. Dao động tần số cao làm tăng dải mà bạn nhìn thấy trong các khung đơn là một vấn đề khác với thiết bị ghi mà tôi dự định xử lý riêng.
ali_m

Câu trả lời:


1

Phương pháp của bạn không tệ cho lần thử đầu tiên.

Tuy nhiên, phương pháp sau có xu hướng hoạt động tốt hơn:

  1. Tìm kiếm cực đại địa phương
  2. Kiểm tra cực đại gần (khoảng cách 2 hoặc 3 thùng) và hợp nhất chúng
  3. Tạo một vài giả thuyết về tần số cơ bản. Hiện tại bạn cho rằng đỉnh cao nhất là tần số cơ bản, đó là một giả thuyết. Bạn cũng nên kiểm tra khả năng đỉnh cao nhất là sóng hài đầu tiên, tức là có một đỉnh nhỏ hơn với một nửa tần số của đỉnh chính. Bạn cũng có thể có các trường hợp khác để xem xét, sử dụng kiến ​​thức của bạn về vấn đề trong tay (Can thiệp? Nhịp tim không đều?).
  4. Giả sử từng giả thuyết đó, tìm tần số mặt đất bằng cách lắp parabol vào từng đỉnh sóng hài. Mỗi đỉnh sẽ tạo ra một ước tính hơi khác nhau do nhiễu, nhưng các lỗi này không tương quan và trung bình. Một trong những giả thuyết sẽ dẫn đến sự phù hợp tốt hơn nhiều, hãy chọn tần số mặt đất được dự đoán bởi giả thuyết này.
  5. Sử dụng tần số mặt đất mà bạn đã tìm thấy ở bước 4 như đã cho, hãy chỉnh lại parabol xung quanh mỗi đỉnh để ước tính chiều cao của đỉnh. Lưu ý rằng các đỉnh có thể rơi vào giữa hai thùng.
  6. Bây giờ bạn có vị trí và sức mạnh của cơ bản và hài hòa của nó, nhưng không phải là giai đoạn. Có lẽ dễ nhất để tìm pha của cơ bản, trừ đi, tìm pha của sóng hài đầu tiên, v.v.

Lý do cốt lõi để điều này hoạt động tốt hơn là bước 4. Bất kỳ giả thuyết sai nào về tần số mặt đất sẽ thất bại khủng khiếp khi bạn đang cố gắng điều chỉnh các đỉnh xung quanh vị trí của các sóng hài dự đoán. Giả sử bạn đã đạt cực đại ở 2 Hz. Đây có thể là tần số mặt đất hoặc sóng hài đầu tiên. Khi bạn kiểm tra "giả thuyết sóng hài đầu tiên", tức là tần số mặt đất có thực sự là 1 Hz hay không, bạn có phù hợp với parabola với dữ liệu khoảng 1,2,3,4,5 ... Hz hay không. Nếu giả thuyết đó sai, bạn sẽ nhận được rác khoảng 1,3,5 Hz. Nếu đúng, bạn có thể tìm thấy các đỉnh gần 1,1 Hz, 2.2, 3.3, 4.4 và 5.6 - điều này cho thấy tần số mặt đất thực tế là 1,12 Hz.


0

Bạn đang tìm kiếm phép trừ phổ lặp đi lặp lại . Dưới đây là một số thông tin chung từ một cuốn sách Phân tích nội dung của Alexander Lerch.


Cảm ơn các tài liệu tham khảo. Ấn tượng đầu tiên của tôi là các phương pháp tăng cường lời nói có lẽ là quá mức cần thiết cho rằng tạo tác tôi đang cố gắng loại bỏ là định kỳ và có một tần số cơ bản duy nhất. Tôi nghĩ rằng tôi muốn được tìm kiếm nhiều hơn dọc theo dòng phát hiện cao độ.
ali_m

0

Tôi muốn giới thiệu một tương quan tự động trên biểu đồ của bạn. Bạn có thể xây dựng các bộ lọc đỉnh hoặc âm dựa trên bội số của tần số cơ bản mà mối tương quan mang lại.

Mã này đã giúp tôi tạo ra một âm mưu tương quan tự động tốt (cepstrum là một phương pháp tốt khác khi sóng hài có nhiều sức mạnh hơn cơ bản) http://note.sonots.com/SciSoftware/Pitch.html


-1
1. Automatically detect the fundamental frequency corresponding to the heartbeat, and all of its harmonics

Bạn có thể lấy trung bình địa phương trên DFT để tìm nhịp tim. Nếu một điểm nhất định trong nhóm này lớn hơn thresholdvà giá trị lớn nhất trong một số phạm vi xung quanh nó thì đó là nhịp tim hoặc điều hòa.

2. Filter the data so as to remove the fundamental and all harmonics.

Bạn chỉ có thể sử dụng các chỉ số nhịp tim được định vị trước đó và khâu ngang qua chúng. Nếu điều đó không quá thô thiển với bạn.

Mục đích của phần này của hoạt động là gì? Đây có phải là một phân tích y tế đòi hỏi sự vắng mặt của nhịp tim để tìm kiếm dữ liệu ẩn (có lẽ) khác? Hay là mệnh này chỉ dành cho thẩm mỹ?

Tôi tưởng tượng một bộ lọc lược sẽ hơi khó kiểm soát. Nó sẽ yêu cầu điều chỉnh cẩn thận các tham số phản hồi. Nó có thể khả thi.

EDIT: Bạn yêu cầu một thuật toán phát hiện cao độ? Tôi đã viết một trong những điều này một vài năm trước bằng cách bỏ qua các điều khoản (gần với) DC và tìm mức tối đa cục bộ đầu tiên. Sau đó, sử dụng các thùng ở hai bên tôi có thể sử dụng phép nội suy bậc hai và tìm vị trí của tần số tối đa chính xác hơn độ phân giải được cho phép bởi chính tần số của các thùng.

Nó sẽ chính xác hơn để sử dụng sóng hài? Nó có thể sẽ chỉ thêm một cơ hội cho lỗi. Mặc dù bạn có thể thử lấy giá trị cơ bản bằng phương pháp này và tìm mức tối đa ở mức gấp đôi, gấp ba, v.v. và sau đó sử dụng một phương thức tương tự như trước:

  1. tìm tối đa cục bộ 2. Nội suy bậc hai để tìm giá trị liên bin cho tần số.

Nếu bạn phủ quyết bước bậc hai và chỉ lấy max cục bộ, bạn sẽ không có được tần số chính xác và di chuyển lên các sóng hài sẽ có ích.


Phần đầu tiên nghe có vẻ giống như cách tiếp cận mà tôi đã đề xuất trong câu hỏi của mình, ngoại trừ phương pháp được đề xuất của bạn sẽ không tính đến thực tế là tần số sóng hài nên được đặt cách đều đặn. Tôi thực sự không hiểu ý của bạn là gì khi "sử dụng các chỉ số nhịp tim được định vị trước đó và khâu ngang qua chúng" - bạn có thể nói rõ hơn không? Bước lọc là cần thiết để phân tích các thay đổi cục bộ về cường độ theo thời gian, thay vì cho mục đích thẩm mỹ. Tôi đã tải lên một chút nhỏ hơn .gif("nhỏ" là một thuật ngữ tương đối ở đây!).
ali_m

1. Bộ lọc lược theo định nghĩa: cách đều đặn. 2. Vấn đề là việc lọc một cách thích nghi các nhịp tim bằng bộ lọc lược của freq cơ bản sẽ được gợn sóng bằng tay và kết quả sẽ là lượn sóng bằng tay. Vì vậy, tôi không nghĩ rằng bạn thực sự có thể dựa vào dữ liệu tại những điểm này quá nhiều. 3. Bạn có thể sử dụng các phần khác nhau của hình ảnh và trừ chúng để hủy bỏ nhịp tim, nhưng vẫn duy trì dữ liệu quan tâm?
Andrew Gallasch

1. Quan điểm của tôi là vị trí của các đỉnh sóng hài phải chứa thông tin có thể được sử dụng để xác định chính xác hơn tần số cơ bản. 2. Chính xác ý bạn là gì khi "vẫy tay"? 3. Đó là điều tôi chưa từng xem xét. Không có gì rõ ràng xảy ra với tôi, nhưng tôi sẽ suy nghĩ thêm về việc điều này có thể xảy ra không.
ali_m

1. Xem Chỉnh sửa. 2. mơ hồ và không phải là một giải pháp mạnh mẽ hoặc đặc biệt hữu ích. 3. Thông tin thêm về nhu cầu của bạn có thể giúp đỡ. Xin lỗi, câu hỏi của bạn là một câu hỏi 2 điểm và tôi nghĩ rằng tôi đã cho rằng phần duy nhất bạn gặp khó khăn là phần cuối. loại bỏ nhịp tim.
Andrew Gallasch
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.