MN #27 - Demosaicing

04:47. 4 時に目覚ましなってんだけどなー・・・。せめてあと 15分 くらい早くできないものか。ついインターネットで管巻いてしまうのがよくない。しかしスマホ等の明るい画面による覚醒効果は得たい。5 分くらい遊べるゲームとかしようかな・・・(泥沼の予感)

Demosaic すんぞ。

うごいた。ハローにゃんこ!

demosaic_naive

  • 現物は PNG ですがサイズの都合で JPEG でアップロードしてます。
  • 動いた、といってみたものの暗くてよくわからん。クッションが赤いのはあってる。なんでこんなに暗いんだろうね?元々暗かったのか、ガンマ補正してないせいなのか、もっと初歩的なバグか。
  • 端っこのピクセルは処理をさぼって (0, 0, 0) のままだけど、この解像度だとわかんないね。しばらく放置でよしとする。
  • PNG の保存がいよいよ遅くなり 7 secくらい vs. Bayer そのままのモノクロ RGB では 2.5 sec. libpng がしょぼいのが自分のコードが何かを間違えているのか。

明るくしたいが、その前にもうちょっと G や B の入った画像を試してみるべきだな。なお単体テストなどは一行も書いておりません。

demosaic_kitchen

というわけでキッチン。包丁立てと水筒が赤、まな板とインスタントコーヒーが緑、 Oreo が青、というかんじで概ね合ってる気がする。寄って見てもあからさまにバグっぽいパターンとかはなし。しかし暗い。そしてなんか緑っぽくない?いちおうオフィシャルカメラでとった正解画像もあげときます。

kitchen_gca

自分のバージョンは問答無用で画像を上下反転していたが、ほんとは gyro で向きを検出のうえ正しい方向にしないとだめ、ということがわかりますな・・・。(上の画像はもともとは portrait size で、90度回転した。)

burst merge するまでもなく色々やることがあるけれども、次はどうしようかなあ。histogram を眺めるなどが必要なのかもしんない。あとはラズパイRAW現像の blog でも読み直すか。


ところで自分の demosaicing のアルゴリズムはあり得る限り一番素朴なバージョンを使っている。ちょっと探して出てきた 15 年前のサーベイ論文によると、この方法だとモアレみたいな aliasing が出ちゃうからもうちょっとマシな方法を使うほうが良いといっている。実際ラスパイ RAW 現像のひとはそういうアルゴリズムを実装している。がよくわかんないね。