画質・音質向上とメニューのカスタマイズに挑戦してみました(ウェブ情報実験室)
残念4Kアクションカムチャレンジシリーズ第3回
注目記事
オンキヨーが初のSIMフリースマホGRANBEATを発表、同社単体DAP並みの構造とオーディオ部品を採用
「AirPodsを探す」がiOS 10.3ベータ版に追加。落としたときの捜索・発見が容易に
「地下で繋がらない」解決へ──WiMAX 2+の『LTEオプション』無料拡大、新ルータも発表
人気記事
自宅でWiMAX 2+が繋がらない...を解決するフェムトセル「UQ宅内アンテナ」、1月30日受付開始。
固定回線代替にも便利、auが受信440MbpsのLTE/WiMAX2+対応ホームWiFiルータを2月3日発売
iPhoneから機種変してiPhone 7へ。失敗しないためのバックアップから復元までの手順
こんにちは、フリーライターの宮里です。
前回はファームウェアのバックアップ、書き換え、起動&シャットダウン画面の変更まで試してみましたが、今回はさらにもう一歩踏み込んで、メニュー画面のカスタマイズと音質・画質改善にチャレンジしてみました。その結果、更なる欠点が見えてきました。
この記事は、身近にある「疑問」や「不思議」を検証する『ウェブ情報実験室』です。
実験の目的
ファームウェアをカスタマイズし、動画や静止画の画質を改善する(あと、メニューの誤字を直す)動機
画質の酷さにショックを受けた激安4Kアクションカムですが、ファームウェアの書き換えで遊べることがわかり、起動画面やシャットダウン画面を入れ替えた遊んだのが前回です。今回は真の目的である、画質の改善に取り組みたいと思います。そもそもファームウェアの改造に手を付けようとした動機が「画質の改善できないかな」というのものですから、本来の動機にやっとたどり着けたともいえます。とかいいつつ、薄々感じているかも知れませんが、すでに今はいじって遊ぶのが目的になっています。いつの間にか手段が目的になっているというのは、よくあることですよね。
今回参考にしたのは、前回と同じく「GoPrawn」の掲示板と、画質や音質改善に取り組んだ書き込みのある「DashCamTalk」の掲示板です。
GoPrawn
Hacks already available here.
「GoPrawn」の方は、モジュールへのパッチで解像度やフレームレート設定の変更、ビットレートの向上といったことができるといった情報が書かれています。また「DashCamTalk」の方は、Allwinner V3搭載の『Q3H』というアクションカムのファームウェアをmicro SDカードを使って起動できるようにし、GoPrawnにあった画質向上も含め、音質向上、システム領域の拡張などにも手を出している最高に参考になるものです。DashCamTalk
Hacking Q3H (allwinner v3 - Camdroid)
とはいえ、技術力の足りない身としては自力でモジュールを書き換えたり、好みの画質を探るといった高度なことができません。できることといったら、ちょっとした設定を書き換えるとか、一部のファイルやモジュールの入れ替えてファームウェアを作り直すといったくらいです。
ということで、Google先生にお世話になりつつ書き込みを読み、最大限できそうなこととして大きく3つの目標を立ててみました。
1.メニューの修正と、アイコンや起動音などの変更
2.動画の音声を高音質化
3.低解像度&油絵みたいな残念画質の改善
「1」は、システムに直接関わらない部分なら比較的自由に変更できるだろうということで試してみたかったものです。とくにメニューは日本語表示が選べるとはいえ、かなり怪しい部分が多く、何とかならないかなーって思っていただけに積極的に修正したいところ。アイコンや起動音などはPNGやWAVでファイルが格納されているだけだったので、入れ替えで好みにできるのではないかと思ったので試すことにしました。
「2」。掲示板を読んでたら「高音質化できるよ」みたいなのがあったので、試してみようというのが直接の動機です。音質が気になったことはなかったのですが、よく考えてみれば、道路際とか屋外での撮影ばかりで、そもそも音が気になるような動画を撮影していませんでした(再生しても車の排気音ばかり)。試しにプレーヤーで音楽を流しながら動画を撮影し、再生してみたところ、なるほど結構ひどい。これが改善するのであれば、やる価値はあるでしょう。
「3」は今回最大の目標です。4KといいつつFHDの引き伸ばしだったりということがなくなれば、より高画質化するのは明白。Allwinner V3の仕様上、4Kに期待するのは無理がありますが、それでもFHDでの画質が向上すれば御の字です。静止画においても、過剰な画像処理がなくなれば油絵みたいなべっとりとしたものから繊細な解像感のある写真撮影ができるのではないか、という期待があります。
「2」と「3」については自力で何とかするのは難しいので、パッチが適用されたモジュールと入れ替えることで実現を目指します。
実験対象
対象とするのは前回と同じ『Excelvan Q8』。SoCが「Allwinner V3」、CMOSセンサーは「IMX179」となります。掲示板では『Q3H』という発売元が不明ものが対象となっていましたが、同じAllwinner V3なので、何とかなるだろうという甘い考えです。Q3Hのセンサーは「IMX179s」となるため、完全に同じではありません。またいつも通りですが、改造は自己責任でお願いします。事故や故障が起きても責任とれません。
実験方法
実験方法は基本的に、ファイルの書き換え・入れ替えをしてからファームウェアイメージを作り直し、アクションカムに書き込む、というものになります。この作業を行うには、システムに関係あるファイルを編集する必要があるわけですが、このシステムは「SquashFS」という圧縮された読み込み専用のファイルシステムとなっています。そのままではファイルの編集ができないため、いったん解凍して編集した後、再度圧縮してやる必要があります。
対象となるファイルは、「2-system.img」。このファイルは前回も使ったスクリプトセットにある「unfex.bat」で取り出せ、さらに「squashfs_unmake.bat」で解凍ができます。ファイルは「SQUASHFS-ROOT」というフォルダーに展開されますので、この中のファイルを編集。あとは「squashfs_make.bat」を使って新しい「2-system.img」を作り、ファームウェアを書き換えればいいのですが......この手順で作ったファームウェアでは、なぜかアクションカムが再起動を繰り返すばかりでした。
最初は書き換えたファイルが悪いのかと思ったのですが、元の「2-system.img」を解凍し、そのまま手を加えずに圧縮して作ったものでも同じ症状でした。元と新しく作ったものに何か違いがあるのかとファイル情報を見てみたところ、一部圧縮対象が違うといった微妙な差があることに気づきました。この差が影響しているのかとコマンドのオプションを見直し、同じになるように揃えましたが、やはり再起動ループとなってしまいます。
次に疑ったのが、作業しているWindows 10です。そこで、Anniversary Updateで追加された「Windows Subsystem for Linux(Beta)」を使ったLinux環境を導入。「squashfs-tools」などを追加しつつ試してみたところ、何とか起動するファームウェアを作ることができました。
しかし起動音が鳴らなくなるという問題が発生。それ以外の機能は動いているように見えましたが、他にも問題があるのではないかという不安が残ります。
今度は仮想PCでUbuntu16.10環境を用意。この環境で「2-system.img」を解凍し、手を入れることなく再び圧縮。できあがった新しい「2-system.img」をWindowsへと移動し、書き込みイメージを作ってみたところ、ようやく起動音もちゃんと鳴るものができました。
ということで実験は、「2-system.img」の解凍・編集・再圧縮にUbuntu16.10を使い、それ以外はWindows10で行なうことにします。
以下に、2-system.imgの解凍から書き換え、再圧縮までの手順をまとめておきます。それ以外のアクションカムへの書き込みまでの手順は以前の記事を参考にしてください。
<2-system.imgの解凍>
1.仮想PCにUbuntu16.10をインストール(今回はVirtualBoxを使用)
2.「squashfs-tools」を追加
3.「2-system.img」をUbuntuへとコピーsudo apt-get install squashfs-tools
4.「2-system.img」を解凍・展開
5.「squashfs-root」フォルダーに展開されるunsquashfs 2-system.img
<2-system.imgの再圧縮>
1.2-system.img作成用のスクリプトを作る
2.作成したスクリプトを実行#!/bin/sh
mksquashfs squashfs-root temp_2-system.img -comp xz -no-xattrs -root-owned
dd if=/dev/zero of=new_2-system.img bs=6488064 count=1
cat temp_2-system.img | dd of=new_2-system.img conv=notrunc
rm temp_2-system.img
3.「new_2-system.img」をWindowsへとコピーしてリネームする
手順は以上となります。
ここからは、各実験ごとの具体的な内容についてです。
<実験1>メニューの修正と、アイコンや起動音などの変更
2-system.imgを解凍するとわかるのですが、メニューに関するファイルは「res」というフォルダーに保存されています。ここの「lang」には各言語のメニュー項目、「menu」にはメニュー画面に表示される各種アイコン、「others」には画面操作用のアイコンや効果音など、「topbar」は電池残量など画面上部のステータスアイコンなどが保存されているので、このファイルを入れ替えることで独自デザインの画面を作成できます。
今回はメニューの怪しい日本語の修正と、起動時の効果音の変更を試してみます。
<実験2>動画の音声を高音質化
音質に関係するファイルは、「libCedarX.so」と「libvideoresizer.so」の2つ。「lib」以下にあるこのファイルを入れ替えることで、音質改善を試みます。入れ替えるファイルは、Allwinner V3採用アクションカム関連のファイルが多数まとめられているところからダウンロード可能です。
AllwinnerV3_Dropbox
ここの「Modifications」というところから「audio-mod-lib-F60B-crane-20160514-plutonio-goprawn.zip」をダウンロードし、解凍して使います。こちらを便宜上 [A] とします。
ただ、これはどう改造されたファイルなのか分からないため、もうひとつ別の改造済みファイルを用意することにしました。
10/30 - 44100 Audio: Here
こちらの書き込み、「How:」の手順5にある「10/30 - 44100 Audio: Here」というものをダウンロードし、「RootFS-10-30-16.hex」を入手します。ファイル名こそ違いますが、この中身は「2-system.img」と同じなので、「unsquashfs」で解凍すれば2つのファイルが入手できます。こちらを便宜上 [B] とします。
今回の実験では、標準状態とA、Bの3つについて試すことにします。
<実験3>低解像度&油絵みたいな残念画質の改善
画質を左右するモジュールは、センサー名を冠した「imx179.ko」というファイル。改造済みのファイルは実験2と同じく、「AllwinnerV3_Dropbox」の「Modifications」から入手可能です。ファイル名は「imx179-ko-mod-10-17-2016-plutonio-goprawn.zip」で、これを解凍することで改造済みのモジュールが手に入ります。
この「imx179.ko」を「vendor/modules」というフォルダーへ上書きします。
実験結果
<実験1>メニューの修正と、アイコンや起動音などの変更「res」フォルダーの中はシステムにあまり関係のない部分なので、かなり気楽に書き換え・入れ替えができます。例えば「topbar」にあるバッテリーアイコンは28×24ドットのPNG画像で、背景が透過になっているものです。段階ごとに画像を切り替えて表示するだけなので、5段階ぶんの画像を自分で用意すれば、好みのアイコンにできるわけですね。
一時期流行った、音楽プレーヤーなどのスキン作成が好きな人なら、アイコンの作り込みはかなり楽しめそうです。痛化を考えているのであれば、アイコンの変更までこだわりたいところ。
とはいえ今回重視したのは、もうちょっと実用的な部分。つまり、微妙な日本語メニューの修正です。各言語のメニュー項目は「lang」フォルダーに保存されてまして、日本語ですと「jpn.bin」がそれにあたります。多少言葉が変でも機能は変わらないのでそのままでもいいのですが、「OKボタン押しされ」とかなってるのは気持ち悪いですよね。このファイルは拡張子が「.bin」となっていますが単なるテキストなので、エディタでガツガツ書き換えてあげれば修正できます。
個人的に気になっていたのが、PCと接続した直後に表示される画面。選択する項目名が「Uディスクモード」「パソコン・カメラ」となっているあたりがモヤっとしますので、それぞれ「USBストレージ」「Webカメラ」などと修正してみました。これ以外に、中国語から翻訳されていない部分があったりしますので、気になる部分からどんどん修正していくといいでしょう。
これでちょっと心が落ち着くように。
もうひとつ実用的なカスタマイズとして、効果音の変更があります。ボタンを押したりシャッターを押したりしたときに鳴る音のことですが、これ、設定画面にオフ設定がないんですよね。なので、こういった音がジャマに感じるのであれば、「others」にある「.wav」ファイルを片っ端から0バイトのファイルに置き換えてしまうといいでしょう。ちなみにこのファイルですが、『Media Player Classic - Homecinema』のプロパティで確認してみたところ、以下のようになっていました。
Audio: PCM 22050Hz mono 352kbps [A: pcm_s16le, 22050 Hz, 1 channels, s16, 352 kb/s]
自分で音を用意する場合は、参考にして作るといいでしょう。ちなみに、どのファイルが何の音かはファイル名を見れば大体わかります。例えば起動音を変えたいというのであれば、「startup.wav」を入れ替えます。
なお、シャットダウン時の音は起動音の早回しになるようで、別途「shutdown.wav」を用意しても再生してくれませんでした。ちょっと残念です。
<実験2>動画の音声を高音質化
いよいよ品質改良の第一歩となる、音質改善です。「libCedarX.so」と「libvideoresizer.so」の2つのファイルを入れ替えるわけですが、両方変えた場合と片方変えた場合で音質が変化する可能性があります。また実験方法でも書いたように、今回、パッチを当てたファイルだけをダウンロードした [A] と、別のファームウェアから取り出した [B] の2種類があるため、[A] と [B] の組み合わせを除く合計7パターン試すことにしました。なお、入れlibCedarX.so替えていないものは [N] と表記します。録画したファイルのプロパティから、音声の情報をまとめたものが次の表です
libCedarX.so | libvideoresizer.so | 結果 | |
1 | N | N | 16kbps/8kHz |
2 | A | A | 起動せず |
3 | A | N | 起動せず |
4 | N | A | 16kbps/8kHz |
5 | B | B | 66kbps/44kHz |
6 | B | N | 66kbps/44kHz |
7 | N | B | 16kbps/8kHz |
残念ながら [A] を使った場合はカメラが起動しないか、音質は低いままとなってしまいました。これに対して [B] は、「libCedarX.so」を入れ替えた場合に音質がアップしています。「libvideoresizer.so」は意味がないのかなと思い、撮影した5と6とで音を聞き比べてみたのですが......どちらも違いが判りません。更にいうと、16kbps/8kHzと66kbps/44kHzでの違いもサッパリです。どうも怪しいのはマイクの品質で、サンプリングレートを上げてみたところで音は改善されないのではないか、という可能性が高いです。
もうひとつ問題があって、実はこの2つのファイルを入れ替えた場合、4K/30fpsとFHD/60fpsの2つのモードで動画が撮影できなくなります。正確にいうと、一応撮影そのものは可能ですが映像がまともに映りません。
もっとも、どちらも画質が酷いモードでしたから、気にしなくてもいいような気もしますけど。
また、プロパティで表示されるフレームレートが1.5~2倍くらいになっています。30fpsの動画が43fpsや60fpsと表示されるだけで、問題なく再生されるので実害はないですが......ちょっとモヤっとしたものが残ります。
やはり横着をせず、自力で修正したファイルを用意しないとダメそうな雰囲気ですね。
<実験3>低解像度&油絵みたいな残念画質の改善
大本命の品質改良が、この画質の改善です。改造された「imx179.ko」ですが、期待できる効果は大きく2つ。ひとつは、4K動画やFHD/60fps、720/60fpsなどの時に顕著だった低解像度引き伸ばしがなくなるかもしれないというもの。ひどかったですもんね。もうひとつは、ISP(Image Signal Processor)による画像加工を抑えることで、動画だけでなく静止画にもあった、油絵みたいな細部の潰れたのっぺりした画質を改善できる可能性です。
細かいことはさておき、実際入れ替えた前後での画質を比べてみましょう。まずは動画からです。モジュールの入れ替え前後でほぼ同じシーンを切り出し、拡大せずに比較してみます。
・4K/30fps画質比較
過度な強調がなくなり、全体的にぼやけた印象になっています。細部を見ると途切れてしまっていた電線が残っていたり、モスキートノイズの減少などから、画質は向上しているように感じられます。ただし、解像度の引き伸ばしはそのままです。
・2.7K/30fps画質比較
改造後はぼやけた印象になっていますが、道路照明灯のディテールが残っているなど、画質そのものはいい感じに。もとの2.7Kもそれほどひどくなかったとはいえ、比べてみると電線周囲のゴミが気になりますね。
・FHD/60fps画質比較
ホワイトバランスに違いがあるので画質に差があるように見えますが、どちらもほとんど同じ。改造後でも、このモードは前と同じままのようです。過度な引き伸ばし+画像処理でイイトコなし。
・FHD/30fps画質比較
この解像度だと、むしろぼやけた画質の方が悪いように見えてくるので不思議です。とはいえ、改造前は輪郭協調が過度で電線が荒くなっているのがよくわかります。どちらがいいかは、好みの違いになりそう。
・720/90fps/60fps/30fps画質比較
720は元が酷かったので、改造後のものだけ並べておきます。
元は90fpsと60fpsが引き伸ばし画質になっていましたが、解像度は全体的にぼやけているためか、どうも引き伸ばしという感じはしません。見比べてるとわずかに解像感が劣るようにも見えますが......。ちなみに90fpsだけ、画角がちょっと狭くなってました。なお、720の各ファイルでサイズを比較してみると、30fpsを1とすれば、60fpsは1.2倍、90fpsは1.8倍といった感じ。本来であれば2倍、3倍になっておかしくないので、改造後の動作はわりと怪しいですね。
改造後の動画に関しての評価を、解像感を中心にまとめておきます。なお、全体的にボケた画質になるのは見てすぐわかるので、そこは備考に入れていません。
動画形式 | 改造の効果 | 備考 |
4K/30fps | ○ | 引き伸ばしのままだが、細部の潰れは少ない |
2.7K/30fps | ◎ | 過度な強調がなく、細部が見やすくなる |
1080/60fps | × | 変化なし |
1080/30fps | ○ | 細部を見たときのノイズ感が減少 |
720/90fps | △ | 解像感が高くなってる気がしなくもない |
720/60fps | △ | 解像感が高くなってる気がしなくもない |
720/30fps | △ | この解像度だとノイズより色合いが気になる |
解像度が低いと細部の潰れが気にならなくなるため、むしろシャープな画質となる改造前の方が印象がいいです。とはいえこれはFHDあたりが境界で、これを超える2.7Kでは細部がしっかり見えるぶん、改造後の方がいい画質だと感じられます。4Kは......ひと目で引き伸ばしとわかる劣悪な画質ですが、改造後はまだマシというレベルになっているかと。
続いて静止画ですが、結論から言えば改造しても前回と同じく5~16MPまでほぼ画質は変わりません。その証拠として、5MPを拡大(irfanviewを使用し、リサンプル処理で高画質化)したものと、16MPとで比較してみましょう。
16MPの方がノイズの粒が若干小さくなるという差はありますが、解像感に関してはほぼ同じ。やはり、5MPあたりの画像を元に拡大して他の高解像度静止画を作っている可能性が高いようです。もうひとつの可能性は、レンズの品質が低く、この程度の画質が限界だという仮説です。これを証明するにはレンズを交換するしかないので難しいのですが、かなり怪しんでいます。
改造前後の画質は、びっくりするほど違っています。16MPの静止画の一部を切り出して並べてみましょう。
一目瞭然ですね。色の派手さがなくなっているとはいえ、細部の描画やノイズの差はわかりやすく、改造後の方が明らかにキレイ......というか自然です。動画と同じく全体的にボケてしまいますが、飛びまくっていた色はしっかりと階調がありますし、静止画は改造後の方がかなりいい感じです。これをもとに色をいじったりシャープ化したりと加工すれば、結構まともな写真が作れるでしょう。
まとめますと、動画と静止画どちらとも解像度に関しては変化はないか、ちょっとマシになったかもと感じられる程度の差しかありません。ただし、ISPによる過度な画質補正がなくなることで、本来のディテールが復活し、細部の表現力がアップしているといえるでしょう。
結論
ひとつめの「メニューの修正と、アイコンや起動音などの変更」は問題なくクリアできました。これはいじればいじるほど楽しくなってくる部分なので、凝ったものを作っていきたいです。「動画の音声を高音質化」は仕様としては高音質化しているものの、実際の音として質の向上が確認できないという点で残念な結果となりました。動画のようにデータの水増しがされている可能性もありますが、そもそもマイクの品質が悪いのではないか、という疑いが濃厚です。とはいえ、4Kなどで撮影に失敗するのは別のファームウェアから流用した結果でしょう。自力で何とかしないとダメそうです。
また「低解像度&油絵みたいな残念画質の改善」は、比較した限りでは5MPあたり静止画を加工することで高解像度の静止画が作られているという根本部分に変化はありませんでした。ただし、ISPの設定が変わることで、とくに細部の画質は向上しています。全体的にボヤけているのは、どうもレンズの悪さが影響していそうな印象が強いです。ピントがずれてる可能性も高いです。そもそもこのアクションカメラがレンズの悪さを過度な加工でごまかす仕様なんじゃないか、などと邪推してしまいます。
ということで、この実験結果からわかったことをまとめると、
1.メニューは好きなようにいじれるのでかなり遊べる 2.ファームウェアの変更だけでは音質の向上はほとんどない (マイクの品質が悪いんじゃないか?) 3.動画・静止画の引き伸ばしは変わらない 4.動画・静止画の色飛び・ノイズ・潰れは大きく減るが全体的にボケボケ (レンズの品質が悪いんじゃないか?) 5.トコトンこだわるなら自力でのモジュール改造が必要 |
といったところでしょうか。ファームウェアをいじるだけで大幅な高音質化・高画質化ができたわけじゃないですが、それなりの改善にはなったといえそうです。そして、なんとなーく、ソフト面ではなくハード面の欠点(マイクやレンズの品質の悪さ)が見え隠れしてきたところが興味深いです。