Ich versuche eine Herzfrequenz aus einem Video meiner Haut zu finden. Um dies zu tun, nehme ich ein beschnittenes Rechteck von Pixeln von meinem Videoframe und mittle die rote (oder grüne) Komponente in all diesen Pixeln (dann natürlich, wenn man sieht, wie sich dieser Durchschnitt von Frame zu Frame ändert).
Ich nehme eine schnelle Fourier-Transformation des Vektors (der durchschnittliche Farbwert jedes abgeschnittenen Ausschnitts), um zu sehen, welche Frequenzen am auffälligsten sind. Ich hoffe, die ruhende menschliche Herzfrequenz, ~ 1 Hz, als sehr prominent zu sehen.
Als Test habe ich ein Video von nur einer Wand oder anderen Objekten genommen, die keine periodische Farbänderung haben sollten. Ich benutzte ein Stativ und drei verschiedene Kameras verschiedener Marken. Jeder von ihnen hat ähnliche, wenn nicht sogar identische Hintergrundfrequenzspitzen, insbesondere bei 1 Hz, 2 Hz, 5 Hz und 10 Hz. Ich habe unter natürlichem Licht und fluoreszierend geschossen und es tritt immer noch auf.
Mein oberstes Ziel ist es, mit dieser Analyse lebende Haut von nicht vaskularisierter Haut zu unterscheiden. Also verstehe ich, warum ich diese Frequenzspitzen für unbelebte Objekte bekomme, VITAL.
Könnte jemand von euch diesen Code auf Ihren eigenen Videos ausführen und erklären, ob ich einfach ein Idiot bin?
Kameraaufnahmen:
Kodak Spieleportage
1920x1080 30fps (60i) importiert als mp4
Canon Vixia HF200 1440x1080 30fps (60i) 12mbps Bitrate Importe als .mts, die ich zu mp4 reencode
Code basiert auf:
%Vor%Ihr Ziel ist es, "eine Herzfrequenz aus einem Video meiner Haut zu finden" und "... mit dieser Analyse lebende Haut von nicht vaskularisierter Haut zu unterscheiden", aber Ihr Ansatz lautet: "Video aufnehmen ... crop ... durchschnittliche rote (oder grüne) Komponente .. schau, wie es sich ändert ".
Ich denke, es gibt ein Problem mit der Prämisse. Average bedeutet, dass das Mehrheitssignal dominiert. Die menschliche Sicht ist ein (erstaunlicher) Prozessor visueller Daten, und normalerweise braucht es jahrzehntelange harte Arbeit, um eine Maschine in die Lage zu versetzen, auch nur in eine kleine Größenordnung zu kommen. Wenn Sie nicht 90% der Menschen um Sie herum mit Ihren Augen sehen und ihre Herzfrequenz messen können, dann ist ein Mittelungs-Ansatz möglicherweise nicht der richtige Weg.
Es gibt eine unendliche Anzahl von Statistiken, die Sie verwenden können, um zu sehen, wie sich eine Verteilung im Laufe der Zeit ändert, und meine Bedeutung ist nur eine davon. Wenn Sie nur auf den Mittelwert schauen, vermissen Sie möglicherweise die Information.
Wie würde ich das tun:
NACHDEM der menschliche Sehapparat ein gutes Signal bekommen kann, dann würde ich daran arbeiten, Mathematik / Computer das Signal mit dem klaren Wissen zu erhalten, dass der menschliche Apparat überlegen ist.
Wenn ich Punkte / Features verfolgen würde, die sich im Laufe der Zeit bewegen, würde ich mir Metriken für Sub-Pixel-Metrologie ansehen. Ich habe einige davon vor einem Jahrzehnt ( These ) gemacht, und obwohl ich denke, dass der Inhalt relevant sein könnte, könnte es auch anders genug sein, um einen zu verdienen Erstes Durchlesen vor dem Kopieren und Ausführen von Code.
Viel Glück.
Tags und Links ios camera matlab video-processing signal-processing