] 映画の郷 [ 電子工作部:PythonとOpenCVでスキャン画像の修復プログラムを作る

昨年10月に自作スキャナーを完成させこれまでに数十本のフィルムをデジタル化したのですが、気になったのがフィルム上の傷や埃がノイズとして入りこんでしまう点でした。

年末の休みを利用し、スキャンした画像の連続自動修復を行うプログラムを書いてみました。作業は基本パソコン上で行いプログラミング言語としてpythonを使用。画像処理ライブラリOpenCVで動かしていきます。

時系列を追った試行錯誤は別枠で詳述。本稿では現時点までの成果をご紹介していきます。

修復対象は1928年公開のジャン・ルノワール作品『城下町の決闘』。スキャンをしてみたところ、以前の映写に由来する深い傷が目立ちました。旧所有者があまり良くない映写機を使っていたと思われ、フィルムの各コマのほぼ同じ位置に大きな傷が入っています。

参考画像01

その他にも埃や繊維と思われるゴミの影が黒く映りこんでいます。それでも画像一枚ならフォトショップで何とかなるのですが、総コマ数が数千~数万となる映画フィルム修復ではあまり現実的とは言えません。或る程度のコマ数を一括処理できるプログラムを書く方が早そうです。

試行錯誤の末、以下の4ステップで修復を行う流れを考えてみました。

【ステップ1:深い傷の一括修復】複数枚の画像に繰り返し現れる傷にOpenCVの「インペイント」で一括修正をかける。

『城下町の決闘』から連続する画像10枚を選んでみました。

参考画像02参考画像03(オリジナル)
まずは各コマの右側に多く見られる斜めの傷に修正をかけていきます。黒地に手描きの白で傷を示したマスク画像を一枚用意します。
参考画像04(マスク画像01)
OpenCVの「INPAINT_TELEA」関数を使い、ファイル名の連番で自動修復を行う設定をかけながらマスク画像の白い部分を画像の周辺データから修復していきます。
参考画像05参考画像06(第一段階完了時)
白いパッチ部分をもう少し広めに取れば良かったですね。

【ステップ2:ノイズの一括除去】続いて、スキャン画像に個別で現れてくる黒い点状のノイズ(埃やゴミ)を認識させ一括で除去していきます。ステップ1同様にマスク画像と「INPAINT_TELEA」関数を使用していくのですが、先のステップではマスク画像が手描きだったのに対し、今回は画面上の一定の黒さ以上の部分を色抽出プログラムで抜き出し、各コマごとにマスク画像を自動生成、自動修復していきます。
参考画像07(マスク画像2)参考画像08参考画像09(第二段階終了時)
画面のあちこちに発生していたノイズの点々をある程度除去できました。

【ステップ3:薄い傷の個別修復】ステップ1では大きな傷、ステップ2で細かなゴミの影を除去した後、今度はコマ個別に発生している薄く細い縦線(映写機由来の傷)を消していきます。OpenCVの線描画機能(Line関数)を使用し、画面上の細かな傷をなぞった跡をマスク画像として保存、三度「INPAINT_TELEA」関数でノイズ除去を行います。細かな傷が対象ですので描線はステップ1より一段階細くしています。
参考画像10(マスク画像3)参考画像11(第三段階終了)

【ステップ4:最終調整】メイン作業はここまでで終了。最後は明度や輝度など微修正を施していきます。OpenCVでガンマ輝度を0.9に下げ、完成画像をオリジナルと比べてみます。
参考画像11(オリジナルと完成画像比較)
課題は山積みで精度もまだ上げられそう。でも今のプログラミング能力だと1週間で組めるのはこの辺まででした。

compared

もう一枚もこの程度まで回復。「綺乃九五式スキャナー」と同様、次段階ではユーザーインターフェイスを自作しモニター画面を見ながらボタンでステップ1~4の作業を行えるようしていきます。

1928 – 9.5mm 『城下町の決闘』(ジャン・ルノワール監督)

「9.5ミリ 劇映画」より

画家オーギュスト・ルノワールの長男、ジャンはフランス映画史上最も重要な監督の一人として知られています。しかしその初期作『城下町の決闘』(1928年)は長らく幻の作品とされてきました。35ミリ、16ミリのオリジナルネガが見つかっておらず完全版が残っていないのです。30年代末に英パテスコープ社が編集した9.5ミリ短縮版が唯一の現存版とされています。

時は16世紀、 カトリーヌ・ド・メディシス(ブランシュ・ベルニ)が権力を握っていたフランスで、剣術の達人である大公フランソワ・ド・ベイン(アルド・ナディ)が宮廷の美女イザベル(ジャッキー・モニエ)に懸想し、カトリーヌの許可を受けイザベルを己の妻にしようとします。イザベルの兄が異議を唱えるのですが、フランソワは決闘の末彼を殺し邪魔者を片付けるのでした。イザベルと相思相愛の仲だったアンリ・ド・ロジエは結納の場に乗りこみイザベルの強奪を試みるも失敗、事件の経緯はカトリーヌ・ド・メディシスの耳に入り、フランソワとアンリの馬上槍試合で決着をつけることになります…

『城下町の決闘』は監督自身の発案で製作されたものではなく映画会社から委託された仕事でした。そのためルノワール監督の本領が発揮されていない、のネガティヴな評価を受けやすい一作です。

軽めの恋愛や派手な剣術を前面に出して大衆受けを狙う辺り確かにルノワールらしくない内容と言えます。とはいえ、よく見てみるとメディシス役のブランシュ・ベルニやフランソワの母親役のシュザンヌ・デプレのベテラン勢も存在感を放っています。『城下町の決闘』は若手(ナディ、モニエ)を中心に繰り広げられるロマンスやアクションを前面に出しつつ、他方でドロドロした政治・宗教の側面(ベルニ)や悩める母の物語(デプレ)を読みこんでいける重層構造になっているのです。正直、真の主演はベルニ、デプレだと言って良いくらいです。

ルノワールは決して大衆芸術としての映画を低く見ていた訳ではありませんし、エンタメ路線と監督のこだわりをきっちり両立させた点で『城下町の決闘』は優れていると言えます。またそう考えるとルノワール監督作で9.5ミリソフト化されたのが本作だけなのもしっくりきますよね。

二年前にこのフィルムを映写機で観た時、右側に白い点々のノイズが入っているのは気がついていました。今回スキャンしてみて予想以上に深い傷があちこちにあると判明。傷そのものよりも、映写機では気づけなかった自分に軽い衝撃を受けています。

sample

[タイトル]
The Tournament

[原題]
Le Tournoi dans la cité

[製作年]
1928年

[IMDB]
tt0019486

[メーカー]
英パテスコープ社

[フォーマット]
9.5mm

ジャンヌ・エルブラン Jeanne Helbling (1903 – 1985) 仏

「フランス [France]」より

Jeanne Helbling 1935 Inscribed Photo
Jeanne Helbling 1935 Inscribed Photo
1903年フランスのアルザス地方生まれ。1920年頃から端役で映画に出演、次第に女優業を本格化させていきました。初期作品ではパテ社で撮影された『小さな悪魔』が9.5ミリフィルムで市販されていて、娘役を演じていた頃の様子を知ることができます。

1920年代中盤がキャリアの最初のピークですが、彼女が特殊だったのはいわゆる大手映画会社(パテ社、ゴーモン社)から距離を置き、独立系映画会社や監督(アンドレ・ユゴン、アルベルト・カヴァルカンテ、ジャン・ルノワールなど)の作品に絡む機会が多かったことです。

中でもジャン・エプスタインと相性が良く、シュールレアリズム短編の秀作として知られる『三面鏡』で中心の役を演じていたのが彼女でした。

Jeanne Helbling in La Glace à trois faces (1927)
『三面鏡』(La glace à trois faces, 1927年)より

1930年代初頭、ハリウッド映画仏リメイク版への出演を経た後に渡米。ハリウッドの流儀があわずに程なくして帰国、舞台やミュージックホールに活動を広げていきました。カジノ・ド・パリで歌や踊りを披露しアルハンブラにも出演、今回入手した直筆メッセージ入りの写真は1935年アルハンブラ出演時に残されたものです。

心優しき同僚のポーレットさまへ
仲良き時間を過ごした思い出に
ジャンヌ・エルブラン
アルハンブラ、1935年

Souvenir amicale, pour ma
gentille camarade Paulette
Jeanne Helbling
Alhambra 1935

30年代中盤以降は脇に回る機会が多くなりますが出演ペースが落ちることはありませんでした。第二次大戦時にレジスタンスに協力、その貢献を認められ戦後英仏の政府それぞれから勲章を受けています。

[IMDb]
Jeanne Helbling

[Movie Walker]

[出身地]
フランス(タン)

[誕生日]
7月26日

ディタ・パルロ Dita Parlo (1908 – 1971)

Dita-Parlo

セーヌ河で船上生活を送る夫婦を描いた『アトランタ号』(1934年)で有名な女優さん。

サイレント映画末期の隠れた秀作『ボヌール・デ・ダム百貨店』(デュヴィヴィエ 1930年)から遺作となった戦後の『スペードの女王』(1965年)まで、深い情感を表現できる個性派女優としてのキャリアを全うしていきました。

[IMDB]
nm0663077

[出身]
ドイツ

[生年月日]
9月4日

[コンディション]
B