Carnet de restauration · Interpolation Cross-Frame de FilmFix
FilmFix offre à ses clients la possibilité d’utiliser une technologie de pointe pour faire entrer les anciens films dans le XXIe siècle ! Nous pensons que les résultats vous impressionneront.
En substance, l’interpolation prend une image saccadée et la fluidifie. Nous y parvenons en « empruntant » une certaine quantité d’informations d’image à deux images successives, puis en insérant deux images nouvellement créées entre ces deux images d’origine. Nous obtenons alors quatre images à partir de deux images d’origine, pour une expérience visuelle plus fluide. Cela commence presque à ressembler à de la vidéo !
Voici une présentation image par image de notre approche d’interpolation ×3. Nous couvrirons les deux sous-variantes que nous utilisons — la technique croisée qui empêche le grain de « bouillir », et pourquoi nous ne laissons jamais l’interpolation peindre à travers une coupe.
Les images de défilé ci-dessous, tournées à main levée en Double 8, constituent un cas de test idéal. La plupart des films dans ce format ont été tournés à 16 images par seconde (i/s), mais cette bobine a presque certainement été filmée plus lentement — plus près de 14 i/s. Tourner à une cadence inférieure s’appelait « undercranking » et constituait une pratique courante chez les cinéastes amateurs. Faire tourner la caméra en dessous de sa vitesse standard permettait d’étirer une coûteuse pellicule sur davantage de secondes d’enregistrement — et, comme effet secondaire souvent négligé, surexposait légèrement le film si cela n’était pas compensé. L’undercranking laissait entrer davantage de lumière sur chaque photogramme, et comme vous le remarquerez, cette bobine du défilé est légèrement surexposée. Néanmoins, lue à 16 i/s, elle paraît accélérée. Grâce à l’interpolation, nous la ramenons à sa cadence réelle de 14 i/s !
Dans son état d’origine à 14 i/s, il y a à peine assez de mouvement échantillonné entre une image et la suivante. Les marcheurs du défilé avancent par à-coups visibles, les drapeaux tressaillent au lieu d’onduler, et un lent panoramique sur la foule crée un effet stroboscopique presque disco. C’est précisément dans ce type de séquence que notre technique montre toute la valeur d’une interpolation ×3.
Pourquoi nous utilisons 42 i/s, et non 50 ou 60
Nous n’interpolons pas vers un nombre rond correspondant à une norme TV ; nous triplons plutôt la vraie cadence de prise de vues. Une bobine à 14 i/s devient 14 × 3 = 42 i/s (une bobine à 16 i/s arriverait à 48, et une à 18 i/s à 54 i/s). Multiplier la cadence réelle signifie que chaque image d’origine conserve une position exacte et régulièrement espacée, avec deux images générées entre elle et la suivante — sans rééchantillonnage, sans dérive, et avec les originaux laissés intacts.
Ci-dessous figure la chaîne de traitement réelle appliquée à cette bobine, dans l’ordre, avec des images fixes extraites directement des dossiers de travail. Les images fixes sur lesquelles nous basons l’interpolation sont non recadrées, en plein cadre (cliquez sur une image pour révéler l’overscan). Cet overscan montre la zone des perforations et des informations d’image supplémentaires sur les côtés — des détails utiles à l’interpolation. Ces fichiers ont déjà été étalonnés et stabilisés, et sont des masters 8 bits sans compression.

Les masters. Notre point de départ conserve l’overscan d’origine du film, les saletés et le grain. Rien n’est modifié ici ; ces éléments subsistent dans le montage final exactement tels qu’ils ont été numérisés.
Parcourez la séquence finale
Chaque troisième image est un master intact ; les deux images entre elles n’ont jamais existé sur le film. Avancez avec les flèches (maintenez pour faire défiler), cliquez sur l’image pour passer à la suivante, ou lancez la lecture pour une progression lente à ~8 i/s.
100% · pixels réels — les trois fenêtres sur l’image ci-dessus, pixel pour pixel depuis le fichier d’origine. Les cadres numérotés sur l’image indiquent chaque fenêtre — faites glisser un cadre (ou déplacez-vous dans une fenêtre) pour regarder n’importe quelle zone du cadrage. Nous les avons placés sur les valises rigides, sur des contours à mouvement rapide (la main et le bras apparaissant derrière la robe) ainsi que sur l’arrière-plan juste derrière elle, là où une interpolation naïve laisserait une « traînée fantôme » derrière le mouvement. Alternez image par image et vérifiez — le grain reste du grain, avec bien moins de traînée qu’un outil vidéo utilisant le « flux optique ». Pastille or = vraie image film · rouille = image intermédiaire générée.
01Deux sous-variantes à partir d’une image
extraire → net · sans grain
Avant tout calcul de mouvement, chaque image master est rendue en deux sous-variantes nettoyées. Ce ne sont pas des livrables — elles servent d’échafaudage pour l’étape d’interpolation.
Net conserve uniquement l’élimination des défauts : poussière, rayures et marques de collage disparaissent, mais le grain du film et les détails fins restent pleinement présents.

Sans grain va un cran plus loin et supprime également le grain, laissant une image lisse, légèrement plus douce, qui conserve le contenu de la scène sans son bruit.
La même image, deux lectures ! La première variante (en haut) conserve chaque grain de détail réel. La seconde (en bas) conserve le mouvement et le contenu, mais retire le bruit. L’étape suivante fait jouer ces deux variantes l’une contre l’autre.
02L’astuce de la variante croisée
interpoler · garder la moitié orientée vers le net
C’est la partie dont nous sommes discrètement fiers. Au lieu d’interpoler net-vers-net (ce qui fait bouillir le grain) ou sans-grain-vers-sans-grain (ce qui fait perdre du détail), nous interpolons entre les deux variantes — et nous le faisons deux fois, dans des dispositions opposées.
Pour un résultat ×3, nous avons besoin de deux nouvelles images entre chaque paire de masters : l’une à un tiers du trajet, l’autre à deux tiers. Chacune est générée à partir d’une paire dont l’extrémité nette est le master le plus proche, et dont l’extrémité éloignée est sans grain. Comme une extrémité de chaque interpolation ne porte pas de grain, le modèle ne détecte aucun faux mouvement de moucheture — et l’image conservée reste accolée à un master net, de sorte que les vrais détails sont préservés.
une paire de masters · deux images intermédiaires, chacune orientée vers son master net le plus proche
De chaque passe, nous écartons la moitié qui se situe plus près de l’extrémité sans grain et ne conservons que la moitié orientée vers le net. En assemblant ces deux moitiés conservées, chaque image intermédiaire reste détaillée là où c’est important et stable côté grain partout ailleurs — sur toute la séquence, le grain reste du grain au lieu de bouillir en tempête de neige.
Une image qui n’a jamais été filmée. Générée entre deux masters, nette là où le marcheur se déplace, calme là où vit le grain.
Rendre la jointure invisible
Gérer le grain ne suffit pas tout à fait à lui seul. Une image générée peut encore se trahir si elle présente plus — ou moins — de détail de contour que les images originales qui l’entourent. Quand cela arrive, chaque troisième image semble légèrement « sauter » tandis que l’image alterne entre prise réelle et calculée, un léger scintillement le long des bords que l’œil capte même lorsque chaque image paraît correcte isolément.
Le coupable est généralement un excès d’accentuation sur la variante. Si on la renforce trop, chaque contour dur est exagéré — et comme le grain se loge précisément le long de ces bords, il semble ramper et se repositionner autour d’eux d’une image à l’autre. Le remède consiste simplement à réduire cette accentuation : nous abaissons le renforcement de la variante jusqu’à ce qu’il corresponde au niveau de détail propre au master au lieu de le dépasser. Une fois les deux au même niveau, il n’y a plus de contour qui se déplace, les images ⅓ et ⅔ s’insèrent sans jointure visible, et — comme les étapes suivantes s’appuient là-dessus — toute la séquence devient suffisamment cohérente pour être nettoyée d’un seul tenant.
03Là où l’interpolation échoue
Un modèle sensible au mouvement interpole en trouvant où chaque élément de l’image s’est déplacé entre deux images, puis en dessinant sa position intermédiaire. Cela fonctionne plutôt bien pour le bras d’un marcheur ou un char qui passe. Mais cela échoue de trois façons caractéristiques.
1. Le grain. Le grain du film est essentiellement un bruit aléatoire — un motif de mouchetures différent sur chaque image. Si vous demandez au modèle d’interpolation de suivre le mouvement entre deux images granuleuses, il essaiera consciencieusement d’apparier moucheture à moucheture, inventant de minuscules « mouvements » incohérents partout dans l’image. Le résultat est un grain bouillonnant : un artefact de mouvement inventé, semblable à une tempête de neige, qui bave et rampe à travers l’image, son flux changeant ressemblant parfois à une volée d’oiseaux ou à un banc de poissons changeant de direction — si bien qu’une zone censée être immobile, comme un ciel ou un trottoir, ne reste jamais immobile. Cette bobine de défilé n’est d’ailleurs pas le meilleur exemple pour le montrer. Les plans sont trop courts et comportent trop de mouvement de caméra ainsi que trop de marcheurs en déplacement rapide. Le grain bouillonnant se repère plus facilement dans une prise plus longue, avec peu de mouvement de caméra et une grande surface uniforme comme le ciel.
2. Les zones révélées derrière un objet en mouvement : Lorsqu’un élément bouge, il découvre une partie de l’image qui n’était pas visible dans l’image précédente — le modèle ne dispose d’aucune information antérieure pour la dessiner, il bave donc cette zone nouvellement exposée. Ces images de défilé montrent parfaitement le problème. Portez votre attention sur le mur et le trottoir derrière les enfants portant des drapeaux, et vous verrez à quel point l’interpolation standard se désagrège rapidement. La passe en flux optique ajoute une traînée fantomatique qui suit le mouvement des enfants. Même notre approche croisée à deux sous-variantes commence à montrer ses limites ici — mais elle tient nettement mieux que le filtre de flux optique.
3. L’interpolation à travers les coupes. Cette bobine de défilé est une suite de prises distinctes. À chaque montage, deux images voisines montrent des scènes totalement sans rapport. Un interpolateur qui ignore où se trouvent les coupes lit ce saut comme un mouvement énorme et tente de transformer un plan en un autre. Pendant quelques images, les deux scènes se fondent l’une dans l’autre dans une sorte de fondu baveux que personne n’a jamais filmé. Vous pouvez l’observer dans le lecteur de comparaison : passez sur « flux optique EDIUS » et réduisez la vitesse à ¼×, puis surveillez n’importe quelle coupe. Notre passe CrossFrame détecte chaque coupe à l’avance et maintient simplement l’image, de sorte que chaque transition reste une coupe nette et franche — exactement comme le film l’avait prévu ! (la section 04 montre comment)
Lecture à demi-vitesse pour repérer facilement les différences
À 1×, les deux côtés ont la même durée réelle, tandis que les images supplémentaires fluidifient le mouvement. Elles n’allongent pas la séquence. Faites glisser la poignée pour essuyer entre les deux et observez le mur et le trottoir derrière les marcheurs.
Avant · brut 14 i/s
FilmFix · CrossFrame
ASSET_BASE dans le script vers l’URL publique du dossier web/ pour charger les clips.L’échec que nous contournons par conception. Suivre le mouvement entre deux images granuleuses fait lire le grain lui-même comme un mouvement — et il se met à ramper.
La solution en une ligne
Comme expliqué ci-dessus : ne jamais interpoler entre deux images granuleuses ; toujours faire en sorte qu’une extrémité de chaque interpolation soit sans grain.
04COUPES – des événements que le modèle n’a pas le droit de traverser
détecter chaque montage · supprimer l’interpolation
Une bobine de défilé n’est pas un plan continu. C’est une succession de dizaines de prises. Par exemple, un plan large de la rue, un gros plan sur la fanfare, puis retour à la foule. À chaque nouvelle prise (coupe), deux images adjacentes montrent des scènes totalement sans rapport.
Pour un interpolateur, cet écart ressemble à un mouvement énorme et instantané, il essaie donc de le « lisser », transformant un plan en un autre et laissant une image baveuse et défectueuse à chaque nouvelle prise. Ainsi, avant toute interpolation, nous détectons chaque coupe dans la bobine et interdisons au modèle de dessiner à travers elle. À une coupe, nous maintenons simplement l’image suivante au lieu d’inventer une transition. Le résultat est un montage net et franc, exactement comme le film l’avait prévu.
Le calcul des images, pour les curieux
Pour N images master avec un facteur ×3, la séquence finale comporte 3N − 2 images. Chaque master, puis ses deux intermédiaires générées, puis le master suivant. À 14 i/s, cela donne une sortie à 42 i/s. À une coupe détectée, ces deux images intermédiaires sont remplacées par une image maintenue, de sorte que rien ne se transforme à travers le montage.
à quoi cela ne ressemblera PAS … voyez cette transition baveuse
05La meilleure source de départ : un transfert avec overscan
marges latérales supplémentaires → interpoler → recadrer à la fin
Il existe encore un endroit où l’interpolation arrive à ses limites : le bord du cadre. Un modèle sensible au mouvement fonctionne en faisant correspondre chaque partie d’une image à l’endroit où elle atterrit dans l’image suivante. Au bord, cette correspondance se dégrade beaucoup plus vite sur une image « propre » (un overscan recadré) — tout ce qui entre ou sort du champ n’a aucun équivalent dans l’image voisine, car dans cette image, cela n’est tout simplement pas présent. Le modèle est forcé de deviner, et ses suppositions se voient : les pixels le long de la bordure s’étirent, bavent ou vacillent comme si le bord de l’image était en caoutchouc.
Les images à main levée aggravent ce phénomène partout à la fois. Chaque petite secousse déplace l’ensemble du cadre, si bien qu’à chaque image un nouveau contenu entre d’un côté et sort de l’autre — un brassage constant de pixels auquel le modèle ne peut jamais s’ancrer.
Le remède consiste à donner au modèle plus d’image que ce que le film final montrera jamais. Nous numérisons avec un overscan. La capture dépasse la zone d’image prévue, en prenant tout ce que le film peut offrir à gauche comme à droite. Ainsi, un marcheur qui glisse depuis la droite n’apparaît pas de nulle part — le modèle le suivait déjà dans la marge avant qu’il n’entre dans l’image finale. Les suppositions existent toujours, mais elles se produisent dans la bordure sacrificielle, et non dans l’image conservée.
Pourquoi le recadrage vient en dernier
La marge d’overscan reste dans l’image pendant chaque étape de traitement — interpolation, assemblage, nettoyage temporel final — et n’est recadrée qu’à la toute fin. Si on la recadre plus tôt, chaque étape suivante hériterait d’un nouveau bord sujet aux artefacts. Si on recadre en dernier, alors le bord de l’image finale n’a jamais été un bord pendant le traitement.
Plus de film que vous n’en verrez jamais
La numérisation dépasse l’image livrée sur les côtés gauche et droit. Les artefacts d’interpolation restent accrochés à la marge extérieure — qui, elle, ne survit jamais au recadrage final.
06Une seule passe de nettoyage sur une séquence cohérente
assembler → filtration finale · rayon temporel 4
Une fois les coupes respectées, la bobine est assemblée — originaux et images générées étant entrelacés en un clip continu — puis nous appliquons une unique passe finale de restauration sur l’ensemble. Cette étape n’est possible que grâce au travail d’harmonisation effectué plus tôt. Un nettoyeur temporel évalue chaque image par rapport à ses voisines ; si les images tournées et générées différaient en netteté ou en grain, il lirait cette différence comme un mouvement et soit brouillerait le détail, soit refuserait de nettoyer.
Comme chaque image semble désormais appartenir au même ensemble, nous pouvons pousser fortement cette passe. Nous utilisons un large rayon temporel — un réglage de 4 — en mettant en commun plusieurs images voisines à la fois pour séparer les vrais détails du bruit résiduel et des défauts, de manière bien plus agressive que ne le supporterait la numérisation d’origine, incohérente. Le triplement de la cadence nous aide ici : davantage d’images voisines concordantes, pour une séparation plus nette du signal et du bruit.
Cette passe finale est approfondie — assez approfondie pour laisser à l’image un aspect légèrement numérique. La toute dernière étape consiste donc à lui redonner une texture de film fine et régulière. Cela ne fait pas qu’avoir l’air juste : un peu de grain restauré rend l’image plus nette à la lecture et la maintient cohérente en mouvement, en donnant à l’œil des bords stables auxquels s’accrocher d’une image à l’autre. Plus bas, nous expliquons davantage ce qu’est — et n’est pas — cette texture.
07Voyez par vous-même
avant · après
Voici le même clip de défilé, intact d’un côté et interpolé ×3 de l’autre. Observez les jambes des marcheurs et le panoramique sur la foule. Le saccadé qui évoque le « vieux film » a disparu, tandis que le grain continue à ressembler à du film.
Tous les trois à la fois — original 14 i/s (en haut), flux optique 42 i/s
(en bas à gauche), FilmFix CrossFrame 42 i/s (en bas à droite). Même instant,
même vitesse.
08Ce qu’elle ne peut pas corriger : le flou de mouvement déjà inscrit dans l’image
limites
Il existe un problème qu’aucune interpolation ne peut annuler. Lorsque c’est la caméra elle-même qui tremble — non pas le sujet qui bouge, mais le cadre entier qui tressaute dans la main de l’opérateur — chaque image concernée est capturée avec un flou de mouvement directement incrusté en elle. Ce flou n’est ni du grain ni du bruit posé sur l’image ; il est l’image, enregistrée mollement au moment où l’obturateur était ouvert.
La stabilisation aide les images à rester immobiles, mais elle ne fait que repositionner les images. Elle ne peut pas rendre plus nette une image déjà floue au moment de la prise de vues. Ainsi, une séquence tremblée stabilisée peut rester parfaitement immobile tout en alternant entre images nettes et images molles, brouillées. Le flou apparaît alors et disparaît de façon stroboscopique au rythme des secousses de la caméra.
L’interpolation peut même aggraver cela. Le modèle suppose que les images qu’il traite sont des cibles propres entre lesquelles se déplacer. Si on lui donne une image floue, il transporte fidèlement ce flou dans les nouvelles images qu’il génère, renforçant parfois la traînée au lieu de la diluer. Lorsqu’un plan comporte un fort flou de mouvement déjà inscrit, nous pouvons fluidifier le mouvement, mais pas récupérer la netteté que la caméra n’a jamais capturée. Il est important de le savoir dès le départ.
09Ce que nous ne ferons pas
grain artificiel = artifice
Il vaut la peine d’être précis au sujet de cette texture finale, car les pratiques varient d’un laboratoire de transfert à l’autre. Certains ajoutent un grain prononcé pour masquer les artefacts d’interpolation, ou pour simuler une résolution qu’une numérisation douce n’a jamais réellement capturée. Cela, nous ne le faisons pas ! Notre texture est légère et régulière. Elle améliore la cohésion de l’image en mouvement, mais elle n’invente jamais un détail que votre film ne possède pas, et ne masque jamais une jointure entre une image tournée et une image générée. Là où une image paraît nette, le détail sous-jacent est réel.
Aucune des étapes individuelles présentées ici n’est exotique en soi. Ce qui rend cette approche inhabituelle, c’est la combinaison : harmoniser les variantes pour que les images générées ne laissent aucune jointure, contourner le grain en interpolant entre une paire nette / sans grain, traiter chaque coupe comme une frontière que le modèle ne peut pas franchir, puis seulement nettoyer la bobine assemblée comme un ensemble cohérent. Des éléments simples, bien assemblés — et ensemble, c’est ce qui permet à une interpolation propre d’un film d’archives granuleux de réellement fonctionner !
Pourquoi cela coûte ce que cela coûte
Rien de tout cela n’est un filtre en un clic. Chaque coupe de la bobine est vérifiée à la main avant interpolation, afin que le modèle ne puisse jamais baver à travers un montage. Chaque image passe plusieurs fois dans la chaîne de traitement, avec réduction des défauts et réduction du grain pour construire les deux sous-variantes, puis l’interpolation croisée elle-même — et enfin un nettoyage temporel final sur toute la séquence assemblée. C’est un travail délibéré, en plusieurs couches — et c’est cette main-d’œuvre ainsi que ce temps de traitement que reflète le prix.
Qu’est-ce qui a rendu tout cela possible ?
FilmFix a développé son propre logiciel nommé CrossFrame. Davantage de détails sur les capacités de ce logiciel propriétaire suivront prochainement.
· · ·
Un grand merci à notre client suisse Steven Ganter, qui nous a donné l’autorisation d’utiliser ces images — et qui, après que nous avons longuement discuté du procédé et de l’état actuel de l’IA (il a lui-même une formation en programmation), m’a lancé cette simple question : « Proposez-vous l’interpolation ? » Maintenant, oui !
Merci également à Tom Huebner pour ses efforts sur ce blog.

