ラズベリーパイと戦前映写機を組みあわせた自作のフィルムスキャナーで賞をいただいてから2年が経過しました。スキャナー自体は快調に動いているのですが古いフィルムが相手でもあって傷や汚れも多く、スキャン画像を修復する技術が必要だ…と痛感した2年間でもありました。
昨年、折に触れて画像修復のプログラムをpythonで試していて、今年中に一つのアプリとしてまとめていこうと思っています。
指定したフォルダ(「data」)に連番を付したスキャン画像を放りこんでおき、アプリを立ち上げると画像を読みこんで左側にサムネイル表示。調整や修正を加えた画像が右側に表示され、その設定を保持したまま一括で画像すべてを修正&保存、必要であれば動画化する…フィルム修復を一つのインターフェースで直感的に処理できるといいな、が元々の発想です。
昨年1月、同じ試みをした際はうまくいきませんでした。
この時は「読みこんだ画像を縦スクロール可能なサムネイル表示する」でつまずきました。kivyのファイル選択ウィジェットを使おうとしたのですが失敗。今回はてなブログでkivyでのサムネイルを実装しているサイト(「ふたり暮らし」)を見つけたのでそれをアレンジさせてもらいました。
現時点ではアプリを立ち上げるとまず空のディスプレイが表示されます。左側にはスクロール式のサムネイルとファイル名が表示されていて、適当なファイル名をクリックするとその画像が2面に表示されます。
下部にボタンとスライダーを配置しておいたので試しに「セピア」のスライダーにプログラムを割り当ててみました。以前にデジタル染色で試したプログラムを援用したものです。スライダーは左端が「0」、右端が「180」の値となる設定になっています。真ん中よりやや右寄り、「110」の辺りにスライドを動かすと右の画像が青色になります。
そのままスライドを少し左に戻して「70」の辺りにすると綠、右端まで寄せて「180」にすると赤色に変わります。
もうひとつ「修復1」のボタンに一括簡易修復のプログラムを割り当てていきます。厳密にはスキャン画像上の傷を修復しているわけではないのですが、修正前(上の写真左)に目立つ「黒い汚れ」を消す(写真右)ことができます。100枚ほどの連番画像をまとめて修復してみたところ、時間はかかるものの狙った通りの結果になっていました。
クリアすべき問題が多く実用に耐えるものが完成するのか定かではありません。最終的に修復プロセスを学習した人工知能(AI)に手伝ってもらう所まで念頭に入れていて、長丁場の開発になるはずなのでボチボチ進めていきます。