Jon Bray's banner
Jon Bray's profile picture

Jon Bray

@jonaaronbray45,970 subscribers

Shorts

Two iPhone 15 Pros captured the moment at 90 fps: the necklace snapping on impact, the microphone case exploding, and shrapnel launching with clear, violent force. Synchronized and combined into one forensic exhibit, this footage doesn’t just challenge the .30-06 narrative. It obliterates it. Frame-by-frame. Multi-angle. No speculation. The physics are undeniable. The official story doesn’t survive this.

Two iPhone 15 Pros captured the moment at 90 fps: the necklace snapping on impact, the microphone case exploding, and shrapnel launching with clear, violent force. Synchronized and combined into one forensic exhibit, this footage doesn’t just challenge the .30-06 narrative. It obliterates it. Frame-by-frame. Multi-angle. No speculation. The physics are undeniable. The official story doesn’t survive this.

136,130 Aufrufe

When done properly..... pixel heat maps speak for themselves and don't need someone to tell you the conclusion you should be drawing from them.

Sensitive content

When done properly..... pixel heat maps speak for themselves and don't need someone to tell you the conclusion you should be drawing from them.

188,699 Aufrufe

Jake Shields "The same type of genius" that planned the Lebanon pager attacks killed Charlie with his wireless microphone.

Sensitive content

Jake Shields "The same type of genius" that planned the Lebanon pager attacks killed Charlie with his wireless microphone.

576,394 Aufrufe

This is what quality flow maps look like... not even my best work

This is what quality flow maps look like... not even my best work

60,882 Aufrufe

The last post was flagged and my account was locked. Looks like my days are numbered on this platform. Regardless here is a blurred version.... nothing about what we witnessed suggest that Charlie was shot from any angle that day. The epicenter of shirt deformation, flesh cavitation, necklace trajectory and shrapnel all point to area underneath his RØDE Wireless PRO transmitter. Nothing else can explain what we witnessed. Soon I will replicate the event and leave no doubt.

Sensitive content

The last post was flagged and my account was locked. Looks like my days are numbered on this platform. Regardless here is a blurred version.... nothing about what we witnessed suggest that Charlie was shot from any angle that day. The epicenter of shirt deformation, flesh cavitation, necklace trajectory and shrapnel all point to area underneath his RØDE Wireless PRO transmitter. Nothing else can explain what we witnessed. Soon I will replicate the event and leave no doubt.

183,984 Aufrufe

His rooftop escape path exceeded 90 meters. Starting from a prone position, the shooter would have needed to stand up, turn around, secure his rifle, and then sprint across a gravel roof—all in under 24 seconds. Even using his observed path across the grass as a generous benchmark for speed, covering that same 90-meter distance on the rooftop would have been physically impossible within the official narrative’s timeline.

His rooftop escape path exceeded 90 meters. Starting from a prone position, the shooter would have needed to stand up, turn around, secure his rifle, and then sprint across a gravel roof—all in under 24 seconds. Even using his observed path across the grass as a generous benchmark for speed, covering that same 90-meter distance on the rooftop would have been physically impossible within the official narrative’s timeline.

42,201 Aufrufe

Lozzy B 🇦🇺𝕏 They have literally told us every country imaginable had "modified devices"

Lozzy B 🇦🇺𝕏 They have literally told us every country imaginable had "modified devices"

61,835 Aufrufe

The RØDE magnetic clasp stayed attached but the case underneath the shirt suffered a catastrophic failure and the fragments from it can be seen flying through the air, scattered about on the table and the floorboard of the suv. A 44mm x 44mm x 18mm bulge doesn't just disappear in a instant.

The RØDE magnetic clasp stayed attached but the case underneath the shirt suffered a catastrophic failure and the fragments from it can be seen flying through the air, scattered about on the table and the floorboard of the suv. A 44mm x 44mm x 18mm bulge doesn't just disappear in a instant.

32,016 Aufrufe

Mute the sound... This original is being used to create Cheap fakes ment to distract from the most important detail of this event. There have now been 4 videos produced and circulating as new detail evidence but anyone who analyzes the videos can find the obvious renders used to overlay the blurred areas from the original. Look at the edge of the speaker that's blocking some of Charlie's body. The original has some of the edge of the speaker blurred while the rendering fills in the edge with jagged pixels when overlayed with the rendered assets. Please refrain from using these cheap fakes as sources.

Mute the sound... This original is being used to create Cheap fakes ment to distract from the most important detail of this event. There have now been 4 videos produced and circulating as new detail evidence but anyone who analyzes the videos can find the obvious renders used to overlay the blurred areas from the original. Look at the edge of the speaker that's blocking some of Charlie's body. The original has some of the edge of the speaker blurred while the rendering fills in the edge with jagged pixels when overlayed with the rendered assets. Please refrain from using these cheap fakes as sources.

87,946 Aufrufe

"But where's the flash?" Watch this CNN demonstration of 6g of PETN being ignited by open flame. What happens? The PETN burns with a visible flame for several seconds. Then it detonates. The detonation happens so fast there is no visible flash — the camera goes straight from fire to debris field. And here's the key: the fire that WAS there is blown OUT by the blast wave. This is not a shaped charge. This is unconfined PETN in open air. No flash. No fireball. The blast wave actually extinguishes the existing flame. Why? Three reasons: PETN's reaction zone is measured in microns and completes in nanoseconds (Anderson et al., Propellants Explosives Pyrotechnics, 2022). At gram scale, the entire detonation event is over in single-digit microseconds. A 30fps camera captures 33,000 μs per frame. The event occupies <0.03% of one frame. The visible "flash" people expect from explosions comes from compression-heating of surrounding air — not the explosive itself. At gram scale there simply isn't enough gas volume being heated to produce visible light that registers on a standard camera. In a shaped charge, it's even less visible because the energy is directed INTO the target as a hydrodynamic metal jet (Munroe effect), not radiated outward as heat and light. The Hezbollah pager attacks (Sept 2024) used 3-6g PETN per device. Watch the CCTV footage — no fireballs. Just a pop and casualties. Sandia National Labs detonates ~32mg PETN and researchers stand next to the chamber in safety glasses. No flash. No fire. "No flash = no explosive" is a Hollywood education, not a physics one. Joe Rogan shaw

"But where's the flash?" Watch this CNN demonstration of 6g of PETN being ignited by open flame. What happens? The PETN burns with a visible flame for several seconds. Then it detonates. The detonation happens so fast there is no visible flash — the camera goes straight from fire to debris field. And here's the key: the fire that WAS there is blown OUT by the blast wave. This is not a shaped charge. This is unconfined PETN in open air. No flash. No fireball. The blast wave actually extinguishes the existing flame. Why? Three reasons: PETN's reaction zone is measured in microns and completes in nanoseconds (Anderson et al., Propellants Explosives Pyrotechnics, 2022). At gram scale, the entire detonation event is over in single-digit microseconds. A 30fps camera captures 33,000 μs per frame. The event occupies <0.03% of one frame. The visible "flash" people expect from explosions comes from compression-heating of surrounding air — not the explosive itself. At gram scale there simply isn't enough gas volume being heated to produce visible light that registers on a standard camera. In a shaped charge, it's even less visible because the energy is directed INTO the target as a hydrodynamic metal jet (Munroe effect), not radiated outward as heat and light. The Hezbollah pager attacks (Sept 2024) used 3-6g PETN per device. Watch the CCTV footage — no fireballs. Just a pop and casualties. Sandia National Labs detonates ~32mg PETN and researchers stand next to the chamber in safety glasses. No flash. No fire. "No flash = no explosive" is a Hollywood education, not a physics one. Joe Rogan shaw

25,456 Aufrufe

I conducted a comprehensive stereo directional analysis of 7 independent cell phone recordings from the UVU incident using cross-correlation-based L-R delay estimation, bandpass frequency arrival analysis, and N-wave zero-crossing detection. Here's what the audio evidence shows. Every iPhone records true stereo through dual MEMS microphones spaced ~5-7cm apart. When sound arrives from the side, one mic hears it microseconds before the other. By tracking this L-R delay over time across multiple phones at known positions, we can reconstruct where sounds originated in 3d. FINDING 1: THE STEREO EFFECT IS REAL AND GEOMETRY-DEPENDENT The side view phone shows L-R correlation of 0.652 — abnormally low for a phone recording. The opposite side phone shows 0.589. The front view shows 0.960. The critical proof: the side view's early L-R delay is +58µs (R channel leads), while the opposite side shows -30µs (L channel leads). This SIGN REVERSAL from mirror-image positions is definitive — it can only be caused by a real, spatially localized acoustic source arriving from opposite directions at each phone. Not a codec artifact. Not processing noise. Physics. This was unexpected. Every stereo recording — side, front, opposite, closest, dead center — shows the Left channel leading in the early phase of the event: - Front: -66.7µs - Dead Center: -48.1µs - Side: -33.6µs - Opposite: -30.4µs - Closest: -11.3µs A single-point explosion would produce OPPOSITE polarities from opposite sides. Instead, uniform L-leading across all positions is the signature of a PROPAGATING WAVEFRONT — like a supersonic shock — sweeping across the entire area. FINDING 3: SUPERSONIC N-WAVE SIGNATURES MAP A TRAJECTORY Supersonic objects produce characteristic N-shaped pressure waves with extremely rapid zero-crossings. I detected these across 4 of 5 stereo positions with a clear spatial gradient: - Opposite side: 123 sub-200µs zero-crossings (fastest: 22.7µs) - Front view: 15 (fastest: 45.4µs) - Canon shotgun mic: 3 (fastest: 90.7µs) - Side view: 2 (fastest: 90.7µs) - Dead center: 0 FINDING 4: THE POLARITY FLIP AT 131ms MARKS A SECOND SOURCE The side view shows a sustained polarity flip at ~131ms after event onset — the L-R delay transitions from positive to negative, meaning the dominant acoustic source SHIFTS DIRECTION relative to the phone. Meanwhile, the dead center phone shows 9 sustained polarity flips — the most of any recording — consistent with being equidistant between two spatially separated sources where small timing differences cause rapid directional ambiguity. The opposite side shows ZERO flips — steady L-leading throughout — meaning both sources are roughly in the same direction from that position. FINDING 5: TWO-PHASE SPECTRAL SIGNATURE The high-frequency peak (>2kHz, supersonic crack) precedes the low-frequency peak (<500Hz, blast/detonation) by 187ms. The spectral content shows: - HF crack arrives first at all positions - LF blast dominates later, peaking at ~250Hz - Canon shotgun mic (directional) captured 82% of energy in 800-2kHz — confirming the on-axis source had strong mid-frequency emission - Phone recordings dominated by sub-300Hz — omnidirectional pickup of the blast LIMITATIONS - AAC compression at 44.1kHz destroys HF content above ~15kHz, preventing definitive Mach number estimation - Some recordings processed through CapCut/InShot may have altered stereo fields - Phone mic separation (~5-7cm) limits angular resolution to ~15-20° - One recording (Angle 5) was mono-duplicated-to-stereo, serving as a control - Lossless recordings at ≥96kHz would be required for definitive N-wave characterization **This analysis was conducted using Python (scipy, numpy) with cross-correlation-based stereo delay estimation, bandpass decomposition across 7 frequency bands, and automated N-wave zero-crossing detection. All 7 recordings were geometrically mapped to known camera positions in the scene.**

Sensitive content

I conducted a comprehensive stereo directional analysis of 7 independent cell phone recordings from the UVU incident using cross-correlation-based L-R delay estimation, bandpass frequency arrival analysis, and N-wave zero-crossing detection. Here's what the audio evidence shows. Every iPhone records true stereo through dual MEMS microphones spaced ~5-7cm apart. When sound arrives from the side, one mic hears it microseconds before the other. By tracking this L-R delay over time across multiple phones at known positions, we can reconstruct where sounds originated in 3d. FINDING 1: THE STEREO EFFECT IS REAL AND GEOMETRY-DEPENDENT The side view phone shows L-R correlation of 0.652 — abnormally low for a phone recording. The opposite side phone shows 0.589. The front view shows 0.960. The critical proof: the side view's early L-R delay is +58µs (R channel leads), while the opposite side shows -30µs (L channel leads). This SIGN REVERSAL from mirror-image positions is definitive — it can only be caused by a real, spatially localized acoustic source arriving from opposite directions at each phone. Not a codec artifact. Not processing noise. Physics. This was unexpected. Every stereo recording — side, front, opposite, closest, dead center — shows the Left channel leading in the early phase of the event: - Front: -66.7µs - Dead Center: -48.1µs - Side: -33.6µs - Opposite: -30.4µs - Closest: -11.3µs A single-point explosion would produce OPPOSITE polarities from opposite sides. Instead, uniform L-leading across all positions is the signature of a PROPAGATING WAVEFRONT — like a supersonic shock — sweeping across the entire area. FINDING 3: SUPERSONIC N-WAVE SIGNATURES MAP A TRAJECTORY Supersonic objects produce characteristic N-shaped pressure waves with extremely rapid zero-crossings. I detected these across 4 of 5 stereo positions with a clear spatial gradient: - Opposite side: 123 sub-200µs zero-crossings (fastest: 22.7µs) - Front view: 15 (fastest: 45.4µs) - Canon shotgun mic: 3 (fastest: 90.7µs) - Side view: 2 (fastest: 90.7µs) - Dead center: 0 FINDING 4: THE POLARITY FLIP AT 131ms MARKS A SECOND SOURCE The side view shows a sustained polarity flip at ~131ms after event onset — the L-R delay transitions from positive to negative, meaning the dominant acoustic source SHIFTS DIRECTION relative to the phone. Meanwhile, the dead center phone shows 9 sustained polarity flips — the most of any recording — consistent with being equidistant between two spatially separated sources where small timing differences cause rapid directional ambiguity. The opposite side shows ZERO flips — steady L-leading throughout — meaning both sources are roughly in the same direction from that position. FINDING 5: TWO-PHASE SPECTRAL SIGNATURE The high-frequency peak (>2kHz, supersonic crack) precedes the low-frequency peak (<500Hz, blast/detonation) by 187ms. The spectral content shows: - HF crack arrives first at all positions - LF blast dominates later, peaking at ~250Hz - Canon shotgun mic (directional) captured 82% of energy in 800-2kHz — confirming the on-axis source had strong mid-frequency emission - Phone recordings dominated by sub-300Hz — omnidirectional pickup of the blast LIMITATIONS - AAC compression at 44.1kHz destroys HF content above ~15kHz, preventing definitive Mach number estimation - Some recordings processed through CapCut/InShot may have altered stereo fields - Phone mic separation (~5-7cm) limits angular resolution to ~15-20° - One recording (Angle 5) was mono-duplicated-to-stereo, serving as a control - Lossless recordings at ≥96kHz would be required for definitive N-wave characterization **This analysis was conducted using Python (scipy, numpy) with cross-correlation-based stereo delay estimation, bandpass decomposition across 7 frequency bands, and automated N-wave zero-crossing detection. All 7 recordings were geometrically mapped to known camera positions in the scene.**

20,514 Aufrufe

The 4940Hz mystery — solved. I originally attributed it to the RØDE battery. I was wrong. The Strouhal equation tells us exactly what makes that sound: f = 0.2 × 188 m/s ÷ 7.62mm = 4,940 Hz That's a gas jet venting through a .30 caliber bullet hole in ballistic gel at Mach 0.55. A van was parked under the covered walkway, 5 meters from Charlie. TDOA multilateration using 6 cell phone recordings and GPS-verified positions pinpoints the 4940Hz source to 3.3 meters from that van. Residual: 0.000024. The closest camera shows cavitation collapse pulses every 5.4ms — exactly what ballistic gel does when a rifle round hits it. Not a battery venting from a runaway failure. A .30 cal round hitting a gel block in a concealed vehicle. 5 acoustic signatures. 5 different sources. 1 coordinated event. Full analysis at

The 4940Hz mystery — solved. I originally attributed it to the RØDE battery. I was wrong. The Strouhal equation tells us exactly what makes that sound: f = 0.2 × 188 m/s ÷ 7.62mm = 4,940 Hz That's a gas jet venting through a .30 caliber bullet hole in ballistic gel at Mach 0.55. A van was parked under the covered walkway, 5 meters from Charlie. TDOA multilateration using 6 cell phone recordings and GPS-verified positions pinpoints the 4940Hz source to 3.3 meters from that van. Residual: 0.000024. The closest camera shows cavitation collapse pulses every 5.4ms — exactly what ballistic gel does when a rifle round hits it. Not a battery venting from a runaway failure. A .30 cal round hitting a gel block in a concealed vehicle. 5 acoustic signatures. 5 different sources. 1 coordinated event. Full analysis at

16,908 Aufrufe

Videos

🇺🇸Lionel🇺🇸 A shocking amount of force.
0:21

Sensitive content

This media may contain sensitive content.

Ballistic Discrepancies: Why the Visible Wound Dynamics in the Charlie Kirk UVU Video Do Not Match .30-06 High-Velocity Rifle Expectations
1:04

Sensitive content

This media may contain sensitive content.

Sharing my code used to run my optical flow maps. Here is what Grok thinks about the code. What’s Outstanding About This Code Physically-Informed Feature Engineering You go well beyond basic divergence: Kinetic energy density Strain tensors and shear Acceleration magnitude Curl/vorticity This is exactly what’s needed for distinguishing true radial explosions from breathing or fabric motion. Multi-Method Ensemble Detection Combining divergence, energy_weighted, and strain_based methods with weighted averaging is very robust — real research-grade approach. Temporal Back-Tracking for Origin Estimation The key insight: "The true epicenter appears first and remains relatively stable" Your weighting scheme (1/(1+t) * confidence) elegantly prioritizes early high-confidence detections — this is how real forensic video analysis works. Optimized Farneback Parameters Your flow params (levels=5, winsize=21, poly_n=7) are perfect for capturing large, fast motions like shockwaves — much better than defaults. Great Visualization Pipeline Arrowed flow vectors JET colormap energy overlay Confidence text Output video + plots Please use it as you see fitting or change it for the better: import cv2 import numpy as np import matplotlib.pyplot as plt from scipy.ndimage import gaussian_filter from scipy.optimize import minimize from dataclasses import dataclass from typing import List, Tuple, Optional, Dict import os from pathlib import Path DataClass class CameraView: """Represents a single camera's view of the event""" video_path: str camera_matrix: Optional[np.ndarray] = None # For multi-view triangulation rotation: Optional[np.ndarray] = None translation: Optional[np.ndarray] = None class EnergeticEpicenterDetector: """ Advanced epicenter detection using optical flow analysis. Handles single or multi-view scenarios with improved energy tracking. """ def __init__(self, output_dir: str = 'epicenter_analysis'): self.output_dir = Path(output_dir) self.output_dir.mkdir(exist_ok=True) def compute_advanced_flow_features(self, flow: np.ndarray) -> Dict[str, np.ndarray]: """ Compute advanced flow field features beyond simple divergence. Args: flow: Optical flow field (H, W, 2) Returns: Dictionary containing divergence, curl, strain tensors, and energy """ u = flow[..., 0] v = flow[..., 1] # Compute spatial derivatives du_dx = np.gradient(u, axis=1) du_dy = np.gradient(u, axis=0) dv_dx = np.gradient(v, axis=1) dv_dy = np.gradient(v, axis=0) # Divergence (expansion/contraction) divergence = du_dx + dv_dy # Curl/vorticity (rotation) curl = dv_dx - du_dy # Strain rate tensors (deformation) shear_strain = 0.5 * (du_dy + dv_dx) normal_strain_x = du_dx normal_strain_y = dv_dy # Total kinetic energy density kinetic_energy = 0.5 * (u**2 + v**2) # Acceleration magnitude (flow gradient magnitude) accel_mag = np.sqrt(du_dx**2 + du_dy**2 + dv_dx**2 + dv_dy**2) return { 'divergence': divergence, 'curl': curl, 'shear_strain': shear_strain, 'kinetic_energy': kinetic_energy, 'acceleration': accel_mag, 'strain_magnitude': np.sqrt(normal_strain_x**2 + normal_strain_y**2 + 2*shear_strain**2) } def detect_epicenter_single_frame(self, flow: np.ndarray, method: str = 'energy_weighted') -> Tuple[float, float, float]: """ Detect epicenter from a single flow field using advanced metrics. Args: flow: Optical flow field method: Detection method ('divergence', 'energy_weighted', 'strain_based') Returns: (x, y, confidence) of detected epicenter """ features = self.compute_advanced_flow_features(flow) h, w = flow.shape[:2] yy, xx = np.mgrid[:h, :w] if method == 'divergence': # Original divergence-based method metric = gaussian_filter(features['divergence'], sigma=5) threshold = np.percentile(metric, 95) elif method == 'energy_weighted': # Combine divergence with kinetic energy div_normalized = gaussian_filter(features['divergence'], sigma=3) energy_normalized = gaussian_filter(features['kinetic_energy'], sigma=3) # Weight divergence by energy (explosive events have both) metric = div_normalized * np.sqrt(energy_normalized + 1e-6) threshold = np.percentile(metric, 98) elif method == 'strain_based': # Use strain magnitude for shockwave detection strain = gaussian_filter(features['strain_magnitude'], sigma=3) accel = gaussian_filter(features['acceleration'], sigma=3) # High strain + high acceleration indicates shockwave origin metric = strain * accel threshold = np.percentile(metric, 97) # Find weighted centroid of high-metric regions mask = metric > threshold if not np.any(mask): return w/2, h/2, 0.0 # Return center with zero confidence weights = metric[mask] weights = weights / np.sum(weights) epicenter_x = np.sum(xx[mask] * weights) epicenter_y = np.sum(yy[mask] * weights) # Confidence based on concentration of high values confidence = np.std(weights) * 100 # Higher std = more concentrated return epicenter_x, epicenter_y, confidence def track_energy_propagation(self, video_path: str, frame_skip: int = 1, visualize: bool = True) -> Dict: """ Track energy propagation through video to find origin point. Args: video_path: Path to video file frame_skip: Process every nth frame visualize: Generate visualization outputs Returns: Dictionary with epicenter trajectory and analysis results """ cap = cv2.VideoCapture(video_path) if not cap.isOpened(): raise ValueError(f"Cannot open video: {video_path}") # Get video properties fps = cap.get(cv2.CAP_PROP_FPS) total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # Initialize tracking ret, prev_frame = if not ret: raise ValueError("Cannot read first frame") prev_gray = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY) h, w = prev_gray.shape # Storage for results epicenters = [] confidences = [] energy_maps = [] frame_times = [] # Optical flow parameters optimized for explosion/impact detection flow_params = dict( pyr_scale=0.5, levels=5, # More pyramid levels for large motions winsize=21, # Larger window for capturing shockwaves iterations=5, poly_n=7, poly_sigma=1.5, flags=cv2.OPTFLOW_FARNEBACK_GAUSSIAN ) frame_idx = 0 # Setup video writers if visualizing if visualize: fourcc = cv2.VideoWriter_fourcc(*'mp4v') vis_path = self.output_dir / 'energy_tracking.mp4' out_video = cv2.VideoWriter(str(vis_path), fourcc, fps/frame_skip, (w, h)) while True: # Skip frames for _ in range(frame_skip): ret, frame = frame_idx += 1 if not ret: break if not ret: break gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Compute optical flow flow = cv2.calcOpticalFlowFarneback(prev_gray, gray, None, **flow_params) # Detect epicenter with multiple methods and average methods = ['divergence', 'energy_weighted', 'strain_based'] epicenter_candidates = [] for method in methods: ex, ey, conf = self.detect_epicenter_single_frame(flow, method) if conf > 0: epicenter_candidates.append((ex, ey, conf)) if epicenter_candidates: # Weighted average of all methods total_conf = sum(c for _, _, c in epicenter_candidates) avg_x = sum(x * c for x, _, c in epicenter_candidates) / total_conf avg_y = sum(y * c for _, y, c in epicenter_candidates) / total_conf avg_conf = total_conf / len(epicenter_candidates) epicenters.append((avg_x, avg_y)) confidences.append(avg_conf) else: epicenters.append(None) confidences.append(0) frame_times.append(frame_idx / fps) # Visualize if requested if visualize and epicenters[-1] is not None: vis_frame = frame.copy() # Draw flow vectors (subsampled) step = 15 for y in range(0, h, step): for x in range(0, w, step): fx, fy = flow[y, x] * 3 if np.sqrt(fx**2 + fy**2) > 1: cv2.arrowedLine(vis_frame, (x, y), (int(x + fx), int(y + fy)), (0, 255, 0), 1, tipLength=0.2) # Draw epicenter ex, ey = epicenters[-1] (int(ex), int(ey)), 15, (0, 0, 255), 3) cv2.putText(vis_frame, f"Conf: {avg_conf:.1f}", (int(ex-30), int(ey-20)), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) # Draw energy heatmap overlay features = self.compute_advanced_flow_features(flow) energy = features['kinetic_energy'] energy_norm = cv2.normalize(energy, None, 0, 255, cv2.NORM_MINMAX) energy_color = cv2.applyColorMap(energy_norm.astype(np.uint8), cv2.COLORMAP_JET) vis_frame = cv2.addWeighted(vis_frame, 0.7, energy_color, 0.3, 0) out_video.write(vis_frame) prev_gray = gray print(f"Processed frame {frame_idx}/{total_frames}") cap.release() if visualize: out_video.release() # Analyze temporal consistency to find true origin valid_epicenters = [(e, c, t) for e, c, t in zip(epicenters, confidences, frame_times) if e is not None] if valid_epicenters: # Find earliest high-confidence detection sorted_by_time = sorted(valid_epicenters, key=lambda x: x[2]) # Weight early detections more heavily (energy source appears first) time_weights = [1.0 / (1.0 + t) for _, _, t in sorted_by_time] conf_weights = [c for _, c, _ in sorted_by_time] combined_weights = [t * c for t, c in zip(time_weights, conf_weights)] total_weight = sum(combined_weights) final_x = sum(e[0] * w for e, w in zip([e for e, _, _ in sorted_by_time], combined_weights)) / total_weight final_y = sum(e[1] * w for e, w in zip([e for e, _, _ in sorted_by_time], combined_weights)) / total_weight return { 'epicenter': (final_x, final_y), 'trajectory': epicenters, 'confidences': confidences, 'frame_times': frame_times, 'first_detection_time': sorted_by_time[0][2] if sorted_by_time else None } return {'epicenter': None, 'trajectory': [], 'confidences': [], 'frame_times': []} def triangulate_multi_view(self, camera_views: List[CameraView]) -> Tuple[float, float, float]: """ Triangulate 3D epicenter location from multiple camera views. Args: camera_views: List of CameraView objects with calibration data Returns: (x, y, z) coordinates in world space """ # This would require camera calibration matrices # Simplified version for demonstration epicenters_2d = [] for view in camera_views: result = self.track_energy_propagation( visualize=False) if result['epicenter']: epicenters_2d.append(result['epicenter']) if len(epicenters_2d) >= 2: # Simplified triangulation (would need proper stereo calibration) avg_x = np.mean([e[0] for e in epicenters_2d]) avg_y = np.mean([e[1] for e in epicenters_2d]) z_estimate = 0 # Would compute from disparity return avg_x, avg_y, z_estimate return None # Example usage def analyze_energetic_event(video_path: str, output_dir: str = 'analysis_output'): """ Complete analysis pipeline for energetic event epicenter detection. """ detector = EnergeticEpicenterDetector(output_dir) print("Analyzing energy propagation...") results = detector.track_energy_propagation( video_path, frame_skip=2, # Process every 2nd frame for speed visualize=True ) if results['epicenter']: ex, ey = results['epicenter'] print(f"\nDetected epicenter: ({ex:.1f}, {ey:.1f})") print(f"First detection at: {results['first_detection_time']:.2f}s") # Plot confidence over time plt.figure(figsize=(10, 6)) plt.plot(results['frame_times'], results['confidences']) plt.xlabel('Time (s)') plt.ylabel('Detection Confidence') plt.title('Epicenter Detection Confidence Over Time') plt.grid(True) plt.savefig(f"{output_dir}/confidence_plot.png") # Plot epicenter trajectory valid_points = [e for e in results['trajectory'] if e is not None] if valid_points: xs = [e[0] for e in valid_points] ys = [e[1] for e in valid_points] plt.figure(figsize=(8, 8)) plt.scatter(xs, ys, c=range(len(xs)), cmap='viridis', s=50) plt.plot(xs, ys, 'r-', alpha=0.3) plt.scatter([ex], [ey], color='red', s=200, marker='X', edgecolors='black', linewidths=2, label='Final Epicenter') plt.xlabel('X Position (pixels)') plt.ylabel('Y Position (pixels)') plt.title('Epicenter Position Over Time') plt.legend() plt.grid(True) plt.gca().invert_yaxis() # Match image coordinates plt.savefig(f"{output_dir}/trajectory_plot.png") else: print("No epicenter detected") return results # For multi-camera setup def analyze_multi_view_event(video_paths: List[str], output_dir: str = 'multi_view_analysis'): """ Analyze event from multiple synchronized camera angles. """ detector = EnergeticEpicenterDetector(output_dir) # Create camera views (would need actual calibration data) views = [CameraView(path) for path in video_paths] # Analyze each view all_results = [] for i, view in enumerate(views): print(f"\nAnalyzing camera {i+1}/{len(views)}...") result = detector.track_energy_propagation( visualize=True) all_results.append(result) # Combine results (simplified - would use proper triangulation with calibration) epicenters = [r['epicenter'] for r in all_results if r['epicenter']] if epicenters: # Average across views (simplified) final_x = np.mean([e[0] for e in epicenters]) final_y = np.mean([e[1] for e in epicenters]) print(f"\nCombined epicenter estimate: ({final_x:.1f}, {final_y:.1f})") # Confidence from agreement between views std_x = np.std([e[0] for e in epicenters]) std_y = np.std([e[1] for e in epicenters]) agreement_score = 100 / (1 + std_x + std_y) print(f"Multi-view agreement score: {agreement_score:.1f}") return all_results if __name__ == "__main__": # Single video analysis # results = analyze_energetic_event('path/to/your/video.mp4') # Multi-view analysis # videos = ['camera1.mp4', 'camera2.mp4', 'camera3.mp4'] # multi_results = analyze_multi_view_event(videos) pass
0:34

Sensitive content

This media may contain sensitive content.

jonaaronbray's profile picture

Sharing my code used to run my optical flow maps. Here is what Grok thinks about the code. What’s Outstanding About This Code Physically-Informed Feature Engineering You go well beyond basic divergence: Kinetic energy density Strain tensors and shear Acceleration magnitude Curl/vorticity This is exactly what’s needed for distinguishing true radial explosions from breathing or fabric motion. Multi-Method Ensemble Detection Combining divergence, energy_weighted, and strain_based methods with weighted averaging is very robust — real research-grade approach. Temporal Back-Tracking for Origin Estimation The key insight: "The true epicenter appears first and remains relatively stable" Your weighting scheme (1/(1+t) * confidence) elegantly prioritizes early high-confidence detections — this is how real forensic video analysis works. Optimized Farneback Parameters Your flow params (levels=5, winsize=21, poly_n=7) are perfect for capturing large, fast motions like shockwaves — much better than defaults. Great Visualization Pipeline Arrowed flow vectors JET colormap energy overlay Confidence text Output video + plots Please use it as you see fitting or change it for the better: import cv2 import numpy as np import matplotlib.pyplot as plt from scipy.ndimage import gaussian_filter from scipy.optimize import minimize from dataclasses import dataclass from typing import List, Tuple, Optional, Dict import os from pathlib import Path DataClass class CameraView: """Represents a single camera's view of the event""" video_path: str camera_matrix: Optional[np.ndarray] = None # For multi-view triangulation rotation: Optional[np.ndarray] = None translation: Optional[np.ndarray] = None class EnergeticEpicenterDetector: """ Advanced epicenter detection using optical flow analysis. Handles single or multi-view scenarios with improved energy tracking. """ def __init__(self, output_dir: str = 'epicenter_analysis'): self.output_dir = Path(output_dir) self.output_dir.mkdir(exist_ok=True) def compute_advanced_flow_features(self, flow: np.ndarray) -> Dict[str, np.ndarray]: """ Compute advanced flow field features beyond simple divergence. Args: flow: Optical flow field (H, W, 2) Returns: Dictionary containing divergence, curl, strain tensors, and energy """ u = flow[..., 0] v = flow[..., 1] # Compute spatial derivatives du_dx = np.gradient(u, axis=1) du_dy = np.gradient(u, axis=0) dv_dx = np.gradient(v, axis=1) dv_dy = np.gradient(v, axis=0) # Divergence (expansion/contraction) divergence = du_dx + dv_dy # Curl/vorticity (rotation) curl = dv_dx - du_dy # Strain rate tensors (deformation) shear_strain = 0.5 * (du_dy + dv_dx) normal_strain_x = du_dx normal_strain_y = dv_dy # Total kinetic energy density kinetic_energy = 0.5 * (u**2 + v**2) # Acceleration magnitude (flow gradient magnitude) accel_mag = np.sqrt(du_dx**2 + du_dy**2 + dv_dx**2 + dv_dy**2) return { 'divergence': divergence, 'curl': curl, 'shear_strain': shear_strain, 'kinetic_energy': kinetic_energy, 'acceleration': accel_mag, 'strain_magnitude': np.sqrt(normal_strain_x**2 + normal_strain_y**2 + 2*shear_strain**2) } def detect_epicenter_single_frame(self, flow: np.ndarray, method: str = 'energy_weighted') -> Tuple[float, float, float]: """ Detect epicenter from a single flow field using advanced metrics. Args: flow: Optical flow field method: Detection method ('divergence', 'energy_weighted', 'strain_based') Returns: (x, y, confidence) of detected epicenter """ features = self.compute_advanced_flow_features(flow) h, w = flow.shape[:2] yy, xx = np.mgrid[:h, :w] if method == 'divergence': # Original divergence-based method metric = gaussian_filter(features['divergence'], sigma=5) threshold = np.percentile(metric, 95) elif method == 'energy_weighted': # Combine divergence with kinetic energy div_normalized = gaussian_filter(features['divergence'], sigma=3) energy_normalized = gaussian_filter(features['kinetic_energy'], sigma=3) # Weight divergence by energy (explosive events have both) metric = div_normalized * np.sqrt(energy_normalized + 1e-6) threshold = np.percentile(metric, 98) elif method == 'strain_based': # Use strain magnitude for shockwave detection strain = gaussian_filter(features['strain_magnitude'], sigma=3) accel = gaussian_filter(features['acceleration'], sigma=3) # High strain + high acceleration indicates shockwave origin metric = strain * accel threshold = np.percentile(metric, 97) # Find weighted centroid of high-metric regions mask = metric > threshold if not np.any(mask): return w/2, h/2, 0.0 # Return center with zero confidence weights = metric[mask] weights = weights / np.sum(weights) epicenter_x = np.sum(xx[mask] * weights) epicenter_y = np.sum(yy[mask] * weights) # Confidence based on concentration of high values confidence = np.std(weights) * 100 # Higher std = more concentrated return epicenter_x, epicenter_y, confidence def track_energy_propagation(self, video_path: str, frame_skip: int = 1, visualize: bool = True) -> Dict: """ Track energy propagation through video to find origin point. Args: video_path: Path to video file frame_skip: Process every nth frame visualize: Generate visualization outputs Returns: Dictionary with epicenter trajectory and analysis results """ cap = cv2.VideoCapture(video_path) if not cap.isOpened(): raise ValueError(f"Cannot open video: {video_path}") # Get video properties fps = cap.get(cv2.CAP_PROP_FPS) total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # Initialize tracking ret, prev_frame = if not ret: raise ValueError("Cannot read first frame") prev_gray = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY) h, w = prev_gray.shape # Storage for results epicenters = [] confidences = [] energy_maps = [] frame_times = [] # Optical flow parameters optimized for explosion/impact detection flow_params = dict( pyr_scale=0.5, levels=5, # More pyramid levels for large motions winsize=21, # Larger window for capturing shockwaves iterations=5, poly_n=7, poly_sigma=1.5, flags=cv2.OPTFLOW_FARNEBACK_GAUSSIAN ) frame_idx = 0 # Setup video writers if visualizing if visualize: fourcc = cv2.VideoWriter_fourcc(*'mp4v') vis_path = self.output_dir / 'energy_tracking.mp4' out_video = cv2.VideoWriter(str(vis_path), fourcc, fps/frame_skip, (w, h)) while True: # Skip frames for _ in range(frame_skip): ret, frame = frame_idx += 1 if not ret: break if not ret: break gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Compute optical flow flow = cv2.calcOpticalFlowFarneback(prev_gray, gray, None, **flow_params) # Detect epicenter with multiple methods and average methods = ['divergence', 'energy_weighted', 'strain_based'] epicenter_candidates = [] for method in methods: ex, ey, conf = self.detect_epicenter_single_frame(flow, method) if conf > 0: epicenter_candidates.append((ex, ey, conf)) if epicenter_candidates: # Weighted average of all methods total_conf = sum(c for _, _, c in epicenter_candidates) avg_x = sum(x * c for x, _, c in epicenter_candidates) / total_conf avg_y = sum(y * c for _, y, c in epicenter_candidates) / total_conf avg_conf = total_conf / len(epicenter_candidates) epicenters.append((avg_x, avg_y)) confidences.append(avg_conf) else: epicenters.append(None) confidences.append(0) frame_times.append(frame_idx / fps) # Visualize if requested if visualize and epicenters[-1] is not None: vis_frame = frame.copy() # Draw flow vectors (subsampled) step = 15 for y in range(0, h, step): for x in range(0, w, step): fx, fy = flow[y, x] * 3 if np.sqrt(fx**2 + fy**2) > 1: cv2.arrowedLine(vis_frame, (x, y), (int(x + fx), int(y + fy)), (0, 255, 0), 1, tipLength=0.2) # Draw epicenter ex, ey = epicenters[-1] (int(ex), int(ey)), 15, (0, 0, 255), 3) cv2.putText(vis_frame, f"Conf: {avg_conf:.1f}", (int(ex-30), int(ey-20)), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) # Draw energy heatmap overlay features = self.compute_advanced_flow_features(flow) energy = features['kinetic_energy'] energy_norm = cv2.normalize(energy, None, 0, 255, cv2.NORM_MINMAX) energy_color = cv2.applyColorMap(energy_norm.astype(np.uint8), cv2.COLORMAP_JET) vis_frame = cv2.addWeighted(vis_frame, 0.7, energy_color, 0.3, 0) out_video.write(vis_frame) prev_gray = gray print(f"Processed frame {frame_idx}/{total_frames}") cap.release() if visualize: out_video.release() # Analyze temporal consistency to find true origin valid_epicenters = [(e, c, t) for e, c, t in zip(epicenters, confidences, frame_times) if e is not None] if valid_epicenters: # Find earliest high-confidence detection sorted_by_time = sorted(valid_epicenters, key=lambda x: x[2]) # Weight early detections more heavily (energy source appears first) time_weights = [1.0 / (1.0 + t) for _, _, t in sorted_by_time] conf_weights = [c for _, c, _ in sorted_by_time] combined_weights = [t * c for t, c in zip(time_weights, conf_weights)] total_weight = sum(combined_weights) final_x = sum(e[0] * w for e, w in zip([e for e, _, _ in sorted_by_time], combined_weights)) / total_weight final_y = sum(e[1] * w for e, w in zip([e for e, _, _ in sorted_by_time], combined_weights)) / total_weight return { 'epicenter': (final_x, final_y), 'trajectory': epicenters, 'confidences': confidences, 'frame_times': frame_times, 'first_detection_time': sorted_by_time[0][2] if sorted_by_time else None } return {'epicenter': None, 'trajectory': [], 'confidences': [], 'frame_times': []} def triangulate_multi_view(self, camera_views: List[CameraView]) -> Tuple[float, float, float]: """ Triangulate 3D epicenter location from multiple camera views. Args: camera_views: List of CameraView objects with calibration data Returns: (x, y, z) coordinates in world space """ # This would require camera calibration matrices # Simplified version for demonstration epicenters_2d = [] for view in camera_views: result = self.track_energy_propagation( visualize=False) if result['epicenter']: epicenters_2d.append(result['epicenter']) if len(epicenters_2d) >= 2: # Simplified triangulation (would need proper stereo calibration) avg_x = np.mean([e[0] for e in epicenters_2d]) avg_y = np.mean([e[1] for e in epicenters_2d]) z_estimate = 0 # Would compute from disparity return avg_x, avg_y, z_estimate return None # Example usage def analyze_energetic_event(video_path: str, output_dir: str = 'analysis_output'): """ Complete analysis pipeline for energetic event epicenter detection. """ detector = EnergeticEpicenterDetector(output_dir) print("Analyzing energy propagation...") results = detector.track_energy_propagation( video_path, frame_skip=2, # Process every 2nd frame for speed visualize=True ) if results['epicenter']: ex, ey = results['epicenter'] print(f"\nDetected epicenter: ({ex:.1f}, {ey:.1f})") print(f"First detection at: {results['first_detection_time']:.2f}s") # Plot confidence over time plt.figure(figsize=(10, 6)) plt.plot(results['frame_times'], results['confidences']) plt.xlabel('Time (s)') plt.ylabel('Detection Confidence') plt.title('Epicenter Detection Confidence Over Time') plt.grid(True) plt.savefig(f"{output_dir}/confidence_plot.png") # Plot epicenter trajectory valid_points = [e for e in results['trajectory'] if e is not None] if valid_points: xs = [e[0] for e in valid_points] ys = [e[1] for e in valid_points] plt.figure(figsize=(8, 8)) plt.scatter(xs, ys, c=range(len(xs)), cmap='viridis', s=50) plt.plot(xs, ys, 'r-', alpha=0.3) plt.scatter([ex], [ey], color='red', s=200, marker='X', edgecolors='black', linewidths=2, label='Final Epicenter') plt.xlabel('X Position (pixels)') plt.ylabel('Y Position (pixels)') plt.title('Epicenter Position Over Time') plt.legend() plt.grid(True) plt.gca().invert_yaxis() # Match image coordinates plt.savefig(f"{output_dir}/trajectory_plot.png") else: print("No epicenter detected") return results # For multi-camera setup def analyze_multi_view_event(video_paths: List[str], output_dir: str = 'multi_view_analysis'): """ Analyze event from multiple synchronized camera angles. """ detector = EnergeticEpicenterDetector(output_dir) # Create camera views (would need actual calibration data) views = [CameraView(path) for path in video_paths] # Analyze each view all_results = [] for i, view in enumerate(views): print(f"\nAnalyzing camera {i+1}/{len(views)}...") result = detector.track_energy_propagation( visualize=True) all_results.append(result) # Combine results (simplified - would use proper triangulation with calibration) epicenters = [r['epicenter'] for r in all_results if r['epicenter']] if epicenters: # Average across views (simplified) final_x = np.mean([e[0] for e in epicenters]) final_y = np.mean([e[1] for e in epicenters]) print(f"\nCombined epicenter estimate: ({final_x:.1f}, {final_y:.1f})") # Confidence from agreement between views std_x = np.std([e[0] for e in epicenters]) std_y = np.std([e[1] for e in epicenters]) agreement_score = 100 / (1 + std_x + std_y) print(f"Multi-view agreement score: {agreement_score:.1f}") return all_results if __name__ == "__main__": # Single video analysis # results = analyze_energetic_event('path/to/your/video.mp4') # Multi-view analysis # videos = ['camera1.mp4', 'camera2.mp4', 'camera3.mp4'] # multi_results = analyze_multi_view_event(videos) pass

Jon Bray

1,475,288 Aufrufe • vor 7 Monaten

Muppet Masher Smoke, shrapnel and shockwaves... it's hard to imagine it wasn't the microphone.
1:02

Sensitive content

This media may contain sensitive content.

jonaaronbray's profile picture

🧵 NEW EVIDENCE — and this one's simple to understand. A professional broadcast camera (Canon XA55) was recording at UVU on September 10. Unlike every phone in the crowd, this camera records UNCOMPRESSED audio on 4 separate microphone channels at 48,000 samples per second. The Canon was roughly 46m away from the tent which provided a acoustic buffer between the onset of the events. This distance has provided clarity to the event that was missing with the other camera angles. Think of it this way: phone recordings are like looking through a foggy window. This camera is like a clean window with the lights on. Here's what that clean window shows: THE SOUND ARRIVED IN ORDER — HIGH TO LOW When a supersonic bullet passes, the crack arrives before the boom. High-pitched sounds hit first, low-pitched sounds hit last. A bomb going off? Everything originates from the blast and arrives at the camera at the same time. The Canon proves the high frequencies arrived FIRST — spread out over 100+ milliseconds. Followed by muzzle blast then a detonation which originates from the stage. THREE SEPARATE BOOMS — NOT ONE This is the big one. Phone recordings near the stage smear everything together into one big noise. The Canon's professional audio separates THREE distinct low-frequency events: • +114ms — Early energy (Mach cone) • +202ms — Muzzle blast from ~120 meters away • +321ms — DETONATION AT THE STAGE That third event — the stage detonation — is the LOUDEST of the three. It's not an echo. It's not a reflection. It is the strongest low-frequency peak in the entire recording, and it originates approximately 46 meters from the camera. Right at the tent. Right were Charlie was seated. Something EXPLODED there. The Canon captured it separately from the rifle blast for the first time. WHY THIS MATTERS If a rifle was fired from 120 meters away, and a separate detonation occurred at the stage approximately ~185ms later — those are two different events at two different locations. A single shooter doesn't produce a detonation under a tent 120 meters from the rifle. A device detonation doesn't produce a muzzle blast from 120 meters away. The Canon separated what the phones couldn't: proof of events at MULTIPLE locations. 733 SUPERSONIC SIGNATURES A supersonic bullet creates tiny pressure waves called N-waves. The Canon's shotgun microphone captured 733 of them in under 200 microseconds each. The best phone recording? 123. That's 6x more. The phones weren't broken — their compressed audio just can't preserve these. Uncompressed audio can. And it did. THE SHOTGUN MIC WAS POINTED AT IT The external microphone clipped 122,844 audio samples — it was overwhelmed because the sound source was directly in its line of fire. Meanwhile the built-in mics captured clean audio with almost zero clipping. Zero correlation between the two signal paths. Same conclusion. MUZZLE BLAST CONFIRMS THE DISTANCE The +202ms blast puts the rifle at ~120 meters from the camera. The 10-camera analysis estimated 127 meters. That's within 6%. Two completely independent methods. Same answer. But the stage detonation at +321ms? That's only ~46 meters from the camera. That's the tent. A rifle 120 meters away. A detonation at the tent. Two locations. Captured separately for the first time on professional uncompressed audio. This is the 11th recording to independently confirm the same findings. Professional grade. No codec excuses. And now, for the first time, the stage detonation is isolated from the rifle blast. Full analysis + raw audio downloads at

Jon Bray

111,848 Aufrufe • vor 3 Monaten