時間補間とノイズ除去2

2012/08/18 6:14 に Shimalith web が投稿   [ 2012/08/18 7:57 に更新しました ]
前回まではこちら

で,今回のはこれ.動画に進化した.
Youtubeサイトでの視聴はこちら

Youtubeに上げた際につけたコメント
*****************************************************************************************
福島第1原発2号機格納容器内部工業用内視鏡映像1
http://www.youtube.com/watch?v=qepHVAgNfSU
の映像にノイズ除去フィルタを適用したもの.
ノイズのほか,落下水滴の目障り感が減少します.
左がオリジナル,右がフィルタ適用です.それぞれ640*480ピクセルを横に並べて比較
(コーデックの都合で動画サイズは1280*720とし,上下に黒部分を足しています)

使用ソフト AviUtil 
フィルタ NL-means-filter
このフィルタには時間方向と空間方向の機能がありますが,
空間フィルタを利用するとノイズ除去効果は上がるものの,
画像が補間によって当然ぼやけたように見えるので使用しませんでした.
時間フィルタは参照フレームを増やすほどノイズや水滴の除去効果が上がりますが,
カメラ移動時にゴーストが出るようになるので,前後1フレームのみ参照しています.

カメラ静止時の画質に特化するような設定も可能ですが,
まあ,今回は穏当な範囲,ということです.

東電も最初から綺麗にしたビデオを出すこともできたでしょうが,
きっとあえてそのまま出してきたのでしょう.

おそらく,撮影を工夫し,OpenCVとかの画像処理機能で本気の画像処理を開発すればもっと見えるものもあるんではなかろうかと思いますが,
きっとそれは私ではなく原子力学科の学生の仕事でしょう.頑張ってください.

すべての事故対応に当たっている方々に心よりの感謝を.
*****************************************************************************************

もうちょっと詳細に書くと,
Craving Explorer」等で元動画をローカルに保存する.
保存したデータをがんばってAviutilが読める状態にする.まあ,プラグイン探しが主な仕事.
大容量のストレージとそこそこ速い演算能力を確保する.ここ大事.

Aviutilを使って「nl-means-filter」プラグインの補間処理を使用する.

掲示板でお話していた際は,「補間法を使うと,時空間方向の解像度が落ちるのはわかっているよね?」という厳しいご指摘.
議論中,Shimalithは「たとえ放射線でノイズが乗っても,解像度が良いぶんビデオスコープのほうがファイバスコープより有利.
最大ケーブル長などでもビデオスコープを使うほうが良い」との立場であったので,
わざわざ空間解像度を押し下げるタイプのフィルタを使うのは避け,主に時間補間を利用する方針をとっていた.
「時間補間なら,撮影したいと思う対象を見つけた時に,しばらく停止して撮影すれば良いでしょ?相手は構造物なんだし」

とはいえ,数フレームの補間を行うと移動時にゴーストが発生する(参照フレームのどこも停止していないんだから当たり前)こと,
また参照フレーム数は演算時間にダイレクトに影響するため,今回は時間補間-前後1フレームを採用し,その他のパラメータは適当に調整した.

保存の際は,無圧縮AVIだと今回の640*480で数分の動画でも数GBとなるので,ハフマン圧縮による可逆圧縮huffyuvを利用するのが無難.

ここまでは,タイムスタンプで確認すると,2012/02/22までに出来ていた.
ただ,処理後の動画だけ上げても見づらいだけなので,左右に処理前後の画面を並べて(Aviutilの拡張編集プラグインを使用),,
Youtubeに上げるところで見事に詰まった.
当初,適当に投げつけてYoutubeのフォーマット変換機能でも使おうかと考えていたのだが,
huffyuv形式を理解してもらえなかったか,その後の変換でミスったか,,エラーが出て上げられない.
無圧縮だと50GB近くあってアップロードがまず不可能.

じゃあこっちでH.264まで持っていくか,と,普段使っている高速動画変換機能,AMDのavivoを利用している「A's Video Converter」に,,
投げられない.
640*480動画を横並べすると,当然1280*480の動画になるわけだが,エンコードフォーマットには4:3か16:9か,
少なくともそんな潰れたアスペクト比が設定項目にない!


そんなわけで絶賛放置プレイしていたのですが.
8月になって,ふと「アスペクト比が合うまで上下に黒帯を入れて余らせれば変換できるじゃん?」と.
Aviutilの拡張編集で動画サイズを1280*720にとり,そこに動画を2つ貼る.
黒帯部分には文字をPaintShopPro6でさっくり制作してbmp形式で貼りこんだ.
これをhuffYUV形式で保存.8.4GBになった.
(ちなみにこれを無圧縮とすると90GBオーバになる.HDD空き不足のエラーで保存に失敗したw)

A's Video Converterでエンコードする.
ffdshowのデコーダでhuffyuvをデコードし,H.264でエンコード.190MBになった.
これをアップロードして,終了.

まあそんな(主に余計な)苦労の末のブツなので,回線に余裕があるなら,ぜひHD画質でおっきくして見ていただきたいと思います.



・ノイズの話?
場末の砂嵐まみれの映画館でも内容が理解できることからも明らかなように,
本来人間はノイズキャンセラを持ち合わせているのですよ.
ほら,ここに書いてあるこの文章,
どうしてあなたはギザギザのドットの集まりでなく「これは文字である」と認識できるの?
人間っていうのは,見たいものを見たいようにしか見られない生き物で,ありのままを見られるって考えるほうがおかしいのです.
とはいえ,技術的に目障りなノイズを取り除くと本来見たかったものに集中できるっていうのも事実で,
最新のretina液晶のiPadなんかでも,pdfの読みやすさが全く違う,なんて話もあります.

今回の動画に目を向けていただくと,
ノイズと水滴の一部がない右の動画のほうが見やすいが,白っぽい霧のようなものが缶壁にそって流れているように見えます.
これは内部での高湿度と風の発生,
格納容器の温度勾配と水の凝縮,気化を利用した対流による冷却作用がある可能性を見ているのではないでしょうか.


・こんなテキトーな処理でもある程度見やすくなるのだから,東電は最初っから処理して出せばいいのに,と思わんでもないですが,
彼らがうかつに処理すると「捏造」と言われかねない,というのが大きいのでしょう.
また,ノイズ自体もそれなりに情報を持っています.なにせ放射線がCCDに飛び込む時のノイズ.
カメラに水滴が着くと処理前の動画のノイズも少なくなるのがわかると思います.水遮蔽は大事です.
また,炉内の空間でも,ノイズはちょっとした位置関係で変化しているように見えます.
ノイズの位置と量をマップすると,圧力容器に残っている燃料の分布を算出できる可能性があるのではないでしょうか.

まあ,プレスリリースの写真がノイズだらけだったことを理由に,彼らのやることはなんでも失敗に違いない!というメディア様方に,
「ノイズだらけで失敗」と散々罵られるくらいなら,今回やったように,「生データ+処理したもの」という形で出しておけばいいのに,
と思わんではないですが.


動画のコメントにも書きましたが,放射線のノイズってかなり特徴的な入り方をするので,
単純なフィルタでなく,openCVなどを使ったソフト処理や,FPGAなどのチップ処理による
「ビデオスコープの放射線ノイズに特化して高速に処理できるもの」が作れるはずです.
これからの原子力技術で必ず必要になってくるこういったものこそ,
原子力学科の卒研テーマにいいと思うんですけど.
だれかやってみません?
Comments