Une vidéo d'avion montre un traitement complexe de la profondeur
Édition 2023-08-22 : Ces vidéos sont toutes deux des canulars. J'ai écrit sur l'enquête menée par la communauté ici.
Édition 2023-11-24 : La vidéo stéréo que j'analyse ici n'a pas été créée par le canular original, mais par l'algorithme YouTube
J'ai utilisé quelques techniques de vision par ordinateur de base pour analyser la vidéo satellite de l'avion (voir ce fil si cette vidéo est nouvelle pour vous). tl;dr : J'ai trouvé que la vidéo montre un traitement complexe de la profondeur qui pourrait provenir d'effets visuels 3D éventuellement combinés avec un logiciel sur mesure, ou d'une vidéo réelle, mais pas d'effets visuels 2D.
FAQ mise à jour :
\- "Alors, est-ce réel ?" Je ne sais pas. Si cette vidéo est réelle, nous ne pouvons pas le prouver. Nous ne pouvons qu'espérer trouver un indice qu'elle est fausse.
\- "Ne pourriez-vous pas faire cela via <insérer technique> ?" Oui.
\- "Quels sont vos diplômes ?" J'ai plus de 15 ans d'expérience en vision par ordinateur et en analyse d'image, allant de l'analyse en temps réel avec des techniques traditionnelles à des approches modernes basées sur le deep learning. Tout cela signifie que je n'ai probablement pas foiré les estimations de disparité.
La version la plus ancienne de la vidéo de RegicideAnon a deux perspectives uniques formant une paire stéréo. La distance apparente entre le même objet dans les deux images d'une paire est appelée "disparité" (exprimée en unités de pixels). En utilisant la disparité, nous pourrions être en mesure de faire une estimation de l'orientation des caméras. Cela aiderait à identifier les satellites candidats ou à écarter la possibilité qu'un satellite ait jamais filmé cette vidéo.
Pour commencer, j'ai essayé d'utiliser StereoSGBM pour obtenir une carte de disparité dense. Cela a montré globalement ce que je m'attendais : la profondeur augmentant vers le haut du cadre, avec l'avion ressortant. Mais tout le bruit de compression donne un résultat très déroutant et les détails ne sont pas bien résolus.
Carte de disparité de StereoSGBM pour une seule paire stéréo \(image RGB gauche montrée à titre de référence\).
J'ai essayé d'obtenir une image de fond propre en prenant la médiane sur une période. J'ai exécuté cela pour chaque section de la vidéo où la vidéo n'était pas manuellement panoramiquée. Cela a transformé des paires d'images bruyantes comme ceci :
paire d'images bruyantes du cadre 1428.
En paires d'images propres comme ceci :
paire d'images débruitée de la sixième section de vidéo \(cadres 1135-1428\).
J'ai essayé de recomposer la carte de disparité en utilisant StereoSGBM, mais j'ai constaté qu'elle était encore désordonnée. StereoSGBM utilise le blocage par correspondance, et cela fonctionne vraiment jusqu'à des blocs de 11 pixels. Parce que cette vidéo a des caractéristiques très discrètes, j'ai décidé de prendre une autre approche qui permettrait des blocs beaucoup plus grands : une technique appelée correlation de phase croisée (PCC). Donnant deux images de n'importe quelle taille, PCC utilisera une analyse en domaine fréquentiel pour estimer le décalage x/y.
J'ai divisé les images gauche et droite en grands blocs rectangulaires. Ensuite, j'ai utilisé PCC pour estimer le décalage entre chaque paire de blocs.
Résultats PCC de la sixième section de vidéo \(cadres 1135-1428\).
Dans ce cas, le rouge signifie qu'il y a un grand décalage x, et le gris signifie qu'il n'y a pas de décalage x (ce cas d'échec se produit à l'intérieur des nuages et dans l'océan vide). Cette visualisation montre que le haut de l'image est plus éloigné et le bas est plus proche. Si vous êtes capable de voir la vidéo en 3D en croisant les yeux, ou d'une autre manière, vous l'avez peut-être déjà remarqué. Mais avec des nombres exacts, nous pouvons obtenir une caractérisation plus précise de ce motif.
Alors j'ai exécuté PCC sur toutes les paires d'images filtrées par la médiane. J'ai collecté tous les décalages par rapport à leur position y.
Montrant une ligne ajustée avec une pente de -0.0069.
En bref, ce que cette ligne dit, c'est que la disparité a une plage de 6 pixels, et qu'à toute position y donnée, la disparité a une plage d'environ 2 pixels. Si la caméra était directement au-dessus de cet endroit, nous nous attendrions à ce que l'ajustement de la ligne soit assez plat. Si la caméra était à un angle extrême, nous nous attendrions à ce que l'ajustement de la ligne augmente de manière drastique vers le haut de l'image. Au lieu de cela, nous voyons quelque chose entre les deux.
1. Inclinaison des caméras : En théorie, nous devrions être en mesure d'utiliser la courbe de disparité ci-dessus pour comprendre cela, mais je pense que pour le faire correctement, vous devriez résoudre à la fois l'angle entre les caméras et l'inclinaison en même temps—pour quoi je ne suis pas préparé. Donc tout ce que je dirai, c'est que cela semble haut sans être directement au-dessus !
2. Angle entre les caméras : Lorsque l'avion se déplace de gauche à droite, il fait environ 46 pixels de large pour ses 64 m de longueur. Cela donne 1.4 m/pixel. Si les caméras étaient directement au-dessus de la scène, cela nous donnerait un triangle avec une base de 2px=2.8m et une hauteur de 12,000 m. C'est environ 0.015 degrés. Comme la caméra n'est pas directement au-dessus, la distance entre l'avion et l'océan sera plus grande, et l'angle sera plus étroit que 0.015 degrés.
3. Distance aux caméras : Si nous travaillons avec des optiques de type Keyhole (objectif de 2.4 m pour une résolution de 6 cm à 250 km), alors nous pourrions être 23 fois plus éloignés que d'habitude tout en gardant une résolution de 1.4 m (jusqu'à 5,750 km, presque la moitié du diamètre de la Terre).
Ensuite, au lieu d'analyser toute l'image, nous pouvons analyser l'avion seul en soustrayant l'arrière-plan.
Cadre 816 avant et après la soustraction de l'arrière-plan.
L'utilisation de PCC sur l'avion montre un motif similaire d'avoir une disparité plus petite vers le bas de l'image, et plus grande vers le haut de l'image. Les couleurs dans le diagramme suivant correspondent à différentes sections de vidéo, entre les panoramiques.
https://preview.redd.it/p3h0gkulm1ib1.png?width=554&format=png&auto=webp&s=5db5cddca099de578093c91b132394e77e1b2b77
(Some des points aberrants aléatoires sont des erreurs provenant de moments où l'avion n'est pas dans la scène.)
Voilà la principale découverte que j'ai faite. Remarquez qu'à mesure que l'avion vole vers le bas de l'écran (de gauche à droite sur l'axe x de ce graphique), nous nous attendrions à ce que la disparité continue de diminuer jusqu'à devenir négative. Mais au lieu de cela, lorsque l'utilisateur panorama l'image vers le bas, la disparité augmente à nouveau dans la section suivante, la maintenant positive. Si cette vidéo est un canular, cette caractéristique de compensation de disparité devrait être soigneusement conçue—possiblement avec un logiciel sur mesure. Il serait contre-intuitif de rendre une grande scène en 3D puis faire le compositing du curseur de souris et du panoramique en 2D par la suite. Au lieu de cela, vous voudriez déplacer la caméra orthographique elle-même lors du rendu, et également rendre le superposition du curseur de souris 2D en même temps. Ou construire un logiciel sur mesure qui prend en compte la disparité et la compense. L'analyse de la disparité pendant le panoramique pourrait apporter plus de lumière ici.
Ma principale conclusion est que si c'est faux, un nombre immense de détails ont été pris en compte.
Détails partagés par les deux vidéos : Simulation nuageuse volumétrique complète avec mouvement/évolution lente, traînées d'avion avec dissipation, toute la séquence de "flash de portail", caractéristiques de la caméra telles que la résolution, le taux de rafraîchissement, le flou de mouvement (voir le cadre 371 ou 620 dans la vidéo satellite par exemple), connaissance des performances de l'avion (vitesse, angle de roulis maxi, etc).
Détails dans la vidéo satellite : La compensation de disparité dont je viens de parler, et la télémétrie qui l'accompagne. Rendre une paire stéréo au départ. Mon précédent post à propos de l'illumination des nuages. Et de petits détails tels que l'auto-ombre sur l'avion et le bloom des nuages. Les positions de caméra pourraient-elles s'avérer correspondre à des satellites connus ?
Détails dans la vidéo thermique : la forme du drone et la position de montage de la FLIR. Garder les réticules, mais choisir des options inhabituelles comme un schéma de couleurs arc-en-ciel et pas de HUD. Mais surtout, le rendu des orbes est soigné : les orbes réfléchissent/réfractent la chaleur de l'avion, elles laissent des traînées froides, et projettent un "puits gravitationnel" de style Lazar.
Si tout cela vous intéresse, j'ai publié les parties les plus utiles de mon code sous un cahier sur GitHub.