mieki256's diary



2023/05/30(火) [n年前の日記]

#2 [cg_tools] pfm画像の中身を目視したい

MiDaS の run.py は、処理結果を .png と .pfm (Portable Float Map) の2つで出力してくれる。.pfm にはどんな情報が含まれているのか確認してみたい。しかし、.pfm を開けそうなツールは存在するのだろうか。気になったので少し調べてみた。環境は Windows10 x64 22H2。

結論を先に書いておくと、.pfm を .exr に変換して使うのが妥当かなと…。

GIMPで試した :

GIMP で開くことはできないのかな。ググってみたら、file-pnm で PFM を開けるように機能追加、という話を目にしたけど…。

_[gimp] plug-ins: add PFM reading support to file-pnm

GIMP 2.10.34 Portable で開いてみた。真っ白な画像しか出てこなかった。ただ、どれを開いてもそうなるわけでもなく…。一部の画像は隅っこのほうに黒いもやもやが入ってる。ただ、.png とは全く違う見た目なわけで…。どうも正常に開けているとは思えない。

ImageMagickで試した :

ImageMagick 7.1.0-37 Q16-HDRI x64 で試してみた。とりあえず png に変換してみる。
magick convert dog-dpt_beit_large_512.pfm out.png

GIMP と同様、真っ白な画像になった…。


_ImageMagick - Image Formats

上記ページによると、PFM は Read/Write対応済みと書いてあるように見えるのだけど…。うーん。


magick identify -verbose を使って画像の情報を眺めてみる。
> magick identify -verbose dog-dpt_beit_large_512.pfm
Image:
  Filename: dog-dpt_beit_large_512.pfm
  Format: PFM (Portable float format)
  Class: DirectClass
  Geometry: 1546x1213+0+0
  Units: Undefined
  Colorspace: Gray
  Type: Grayscale
  Endianness: LSB
  Depth: 32/16-bit
  Channel depth:
    Gray: 16-bit
  Channel statistics:
    Pixels: 1875298
    Gray:
      min: -5.00881e+06  (-76.4295)
      max: 6.35226e+08 (9692.93)
      mean: 3.36157e+08 (5129.42)
      median: 1.78825e+08 (2728.69)
      standard deviation: 2.23969e+08 (3417.55)
      kurtosis: -1.66082
      skewness: -0.306461
      entropy: 5.32168e-05
  Rendering intent: Undefined
  Gamma: 0.454545
  Matte color: grey74
  Background color: white
  Border color: srgb(223,223,223)
  Transparent color: none
  Interlace: None
  Intensity: Undefined
  Compose: Over
  Page geometry: 1546x1213+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: Undefined
  Orientation: Undefined
  Properties:
    date:create: 2023-05-29T21:45:37+00:00
    date:modify: 2023-05-29T00:41:42+00:00
    signature: d65a7beee69bd2d2af7f3b85e73a82873cfe59fdf4777940af366f38d93ba316
  Artifacts:
    verbose: true
  Tainted: False
  Filesize: 7.15372MiB
  Number pixels: 1.8753M
  Pixel cache type: Memory
  Pixels per second: 78.9084MP
  User time: 0.063u
  Elapsed time: 0:01.023
  Version: ImageMagick 7.1.0-37 Q16-HDRI x64 1b8963a:20220605 https://imagemagick.org

別のフォーマットなのではと疑ったりもしたけど、PFM (Portable float format) と表示されてるから、画像ファイルであることは間違いなさそう。たぶん。


いきなり .pfm を開くのではなく、MiDaS が出力した .png を、ImageMagick を使って .pfm に変換して、各ツールで開けるのか試してみることにした。

.png から .pfm への変換は以下。
magick convert dog-dpt_beit_large_512.png out.pfm

変換してできた .pfm を、ImageMagick に同梱されてるビューア、imdisplay で表示してみる。
imdisplay out.pfm
これなら .png と似たような見た目になった。また、 GIMP 2.10.34 Portable でも開いてみたけど、そちらも .png と同じ見た目になった。

つまり、ImageMagick (imdisplay) や GIMP で .pfm を開ける場合もある、ということだよな…。全ての .pfm が開けないわけではなさそう。ひょっとして、カラーの .pfm は開けるけど、グレースケールの .pfm は開けない、とか?


_Depth in float32 in meters units - Issue #36 - isl-org/MiDaS - GitHub

上記のやり取りによると、MiDaS が出力する .pfm には float32 が入ってる、と書いてある。最小値と最大値を調べて、各ドットの値を8bitに収めないと目視できる状態にならないと思うのだけど、各ツールはそういうことをしているのかどうか…。1000だの2000だのの値を取り出せても、0 - 255でクリッピングされていたら真っ白になっちゃいそうだけど…。

blenderで試した :

blenderで読み込めないものかなと、blender 3.3.7 x64 LTS で試してみたけど、.pfm という拡張子は画像として認識されなかった。

PFMに対応させるためのパッチが送られたこともあったらしいけど…。

_#28360 - Portable Floatmap format support - blender - Blender Projects

「マイナーなフォーマットをサポートしてたらキリが無いので」という理由で取り込まれることはなかった模様。

また、blender関係の掲示板を眺めてみたけど、「PFMを使いたい」という質問が出てくると「OpenEXRを使え」「PFM? そんなもん使ってるんじゃねえ」と言われることがほとんどのように見えた。OpenEXRは16bitの浮動小数点数で、PFMは32bitの浮動小数点数なんだけどな…。まあ、フツーは16bitで足りるやろという共通認識があるのだろう。

exrに変換してみた :

以下のサービスを使って、.pfm を .exr に変換してみた。

_PFM EXR 変換。オンライン フリー - Convertio


得られた .exr を Luminance HDR 2.6.0 Build 50b31d で開いてみた。

_Luminance HDR
_Releases - LuminanceHDR/LuminanceHDR

それらしい形が目視できた。つまり、MiDaS が出力した .pfm には、ちゃんと情報が含まれているようだなと…。

得られた .exr を、blender 3.3.7 x64 LTS 上でディスプレイスモディファイアのソース画像として使ってみたところ、それらしい形状が得られた。ただ、かなり長い距離が得られるようで、縮小や移動をしてイイ感じのサイズにする作業が面倒…。奥行き方向の解像度が粗いとしても、グレースケールpng画像を利用したほうが使いやすそうだなと…。

余談。ImageMagick 7.1.0-37 Q16-HDRI x64 でも、.pfm から .exr に変換できた。
magick convert dog-dpt_beit_large_512.pfm out.exr

変換後の .exr を Luminance HDR 2.6.0 Build 50b31d で開いてみたけど、こちらもそれらしい形が目視できた。

Darktableで試した :

Darktable 4.2.1 x64 で .pfm を開いてみた。

_darktable

最初に開いた時は真っ白だったけど、コントラスト、明るさ、その他を色々弄ってたらそれらしい形が見え始めた。ただ、どのあたりを変更すればどうなるのかがさっぱり分らない…。それでも一応、.pfm の中にそれらしい情報が入ってることぐらいは分かるけど…。

2023/05/31追記 :

ググっているうちに、 HDRViewというビューアと遭遇。「シンプルな研究指向の深度マップおよびハイダイナミックレンジ画像ビューア」とのこと。PFM、EXR、HDR をサポートしているらしい。

_GitHub - cdcseacave/HDRView
_Releases - cdcseacave/HDRView - GitHub

HDRView_Windows_x64.7z を解凍して、中に入っている HDRView.exe を実行してみた。ウインドウに .pfm をエクスプローラからドラッグアンドドロップしてみたら、それっぽい形が一発で表示された。素晴らしい…。これを使えば .pfm の中身がざっくり分かりそう。ありがたや。

以上です。

過去ログ表示

Prev - 2023/05 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project