toruのブログ

月1くらいで記事書きたい。

2019-01-01から1年間の記事一覧

Sympy で 3次方程式を解くと想定と異なる解が得られた

1. 背景と目的 とある事情により数万~数十万個の3次方程式を解くことになった。 世の中には方程式の解を求めてくれる便利なライブラリがあるため、それを利用して解くことにした。 最初に練習として数百個の3次方程式を解いたところ、一部の式において筆者…

Colour Science for Python の 3DLUT モジュールを使う

背景 これまで画像に 3DLUT を適用する際は外部ツール(DaVinci Resolve, Nuke) を使用してきた。しかし毎回外部ツールを起動するのは面倒だったので Python上 で 3DLUT を適用する環境を構築することにした。ついでに 1DLUT の環境も構築できないか検討した…

Colour Science for Python を使った画像データの読み書き

背景 筆者はこれまで画像データの読み書きは OpenCV または OpenImageIO の Python用Bindings を叩く自作のラッパーを作って行っていた。が、Color Science for Python に良い感じの関数があったので、これを使ってみることにした。 colour.readthedocs.io …

YouTube の HDR to SDR 変換の特性を少し調べる

1. 背景 前回の記事 で YouTube が行っている HDR to SDR 変換をエミュレーションする 3DLUT の作成に成功した。これにより、HDR動画を YouTube へアップロードする前に SDR 変換のプレビューが出来るようになった。 その一方で、色々とコンテンツを弄ってい…

YouTube の HDR to SDR 変換を調べて 3DLUT化する

背景 YouTube に HDR動画をアップロードすると、SDRデバイス向けにサーバー側で自動的に HDR to SDR 変換が行われる。この変換のアルゴリズムは公開されていないため、投稿者が SDR動画を目にするのは投稿後に限定されてしまう。投稿後にしか SDRの動画を確…

Linear のデータに 3DLUTを適用する際は Shaper 1DLUT が必要

目的 Linear のデータに 3DLUT を適用する際は Shaper 1DLUT が必要であることを示す。 背景 過去記事で 自分は以下の記述をした。 一般に Linear のデータに対して 3DLUT を適用する場合は、低階調の精度低下を防ぐために Shaper と呼ばれる 1DLUT を適用す…

色域変換と色域外データのクリッピングについて

目的 3x3 の Matrix を使用した単純な変換な色域変換を行うと、変換先の色域によっては(※)色域のクリッピングが生じて想定外の色相のズレが生じることを図で書く。 ※BT.2020 のような広色域から BT.709 のような狭い色域に変換した場合など 背景 前回の記事…

Gamut確認用のテストパターンを作った

背景 以前、Pixel 3a 購入記念にスマホやタブレットの HDR の 実力を調べる簡単なテストパターンを作った。 www.youtube.com その応用で、WCG(Wide Color Gamut) の実力を調べるパターンを作った。 まだまだ改良すべき点は多いが、ひとまず第一弾が出来たの…

Turbo を利用した HDR10 画像の輝度マップ作成

目的 Turbo[1] を使って遊ぶ 題材として HDR10 画像の輝度マップを作成してみる 背景 Google AI Blog にて Turbo という Rainbow Colormap が発表された。 面白そうなので遊ぶことにした。 ai.googleblog.com 結論 Turbo で遊んだ。楽しかった(小並感)。 適…

HDR to SDR 変換の紹介(以前の記事の補足資料)

1. 目的 HDR(※1) to SDR 変換には大きく分けて 4つの Step があることを紹介する 筆者が 以前の記事 で作成した 3DLUT は一部の Step を省略した簡略型であり絵が破綻することを示す trev16.hatenablog.com ※1 本記事で扱う HDR 信号はコンシューマ向けの HD…

Python を利用した簡単な 3DLUT の作成

1. 目的 3DLUTデータの作り方を簡単に解説する。例として HDR(※) のデータを SDR に変換する 3DLUT を作成する。 なお、本記事は 3DLUT の作り方に特化させたため原理などの基礎的な情報は省略している。3DLUT の基礎的な知識は 富士フィルムさんの資料[1]を…

Dolby Cinema 向けの Output Transform を少しだけ調査した

目的 Dolby Cinema に使われている Output Transform の特性を軽く調べる 具体的には Linear なグレースケールを入力した時の出力特性を調べる。 背景 HOTSHOT の Dolby Cinema とは何か? を読んでいたところ、以下の記述が目に留まった[1]。 今回ハリウッ…

ACES の Linear to Log2 に関するメモ

目的 ACES の Linear to Log2 変換を理解する 背景 知的欲求を満たすため ACES2065-1 のデータに RRT+ODT を適用する 3DLUT をカスタムで作ることになった。 一般に Linear のデータに対して 3DLUT を適用する場合は、低階調の精度低下を防ぐために[1] shape…

色域変換に伴う Primary Colors の RGB値の変化

1. 目的 Primary Colors を色域変換すると Primary Colors で無くなることを確認する(※1) 確認の際の可視化方法を工夫して少しでも分かりやすくする。 ※1例:Red を BT.709 → BT.2020 に変換すると、(1023, 0, 0) → (642, 71, 17) となり、Rチャネル以外にも…

CTLで記述された ACES の RRT と ODT を画像に適用する

目的 ACES の RRT+ODT を任意の画像に適用できる環境を構築する。 背景 OCIO について色々と勉強していると、NUKE と DaVinci Resolve で RRT + ODT の結果が異なることが判明した。 この原因を詳しく調べるためには、NUKE, DaVinci Resolve に依存しない Re…

ColorCheckerのRGB値を分光反射率データから求める

1. 目的 ColorCheckerのRGB値を分光反射率(spectral reflectance)データから求める Chromatic Adaptation や「新しいXYZ表色系」の簡単な実験をする(これは別記事にする予定) 2. 背景 色彩工学の理解を深めたかった。なんとなく理論は知っていたが、実際に…

等色関数とD光源についての調べ物

目的 CIE 1931 表色系の等色関数に関して以下の疑問点を解決する 正式な等色関数の値はどのドキュメントに記載されているのか? 波長幅は 1nm と 5nm の2種類があるが、なぜ2種類あるのか? D光源(※)に関して以下の疑問点を解決する 計算に使う固有ベクトル …

OpenColorIO の Config ファイル作成

1. 目的 OpenColorIO(以後、OCIOと表記する) の Config ファイルを作成する ファイル作成で個人的に苦労した点をメモとして残す 2. 背景 OCIO の名前は数年前から目にしており何となく気になっていた Nuke で HDRの勉強をする際に Nuke標準の Color Manage…

Astrodesign A-Log の特性

目的 Davinci Resolve 16 で新規追加となった Astrodesign A-Log の特性をプロットする。 結論 A-Log の特性をプロットした結果を図1に示す。ARRI LogC と SONY S-Log3 の中間くらいの特性の模様。 図1 A-Log をプロットした結果 感想 DJI の D-Log をプロッ…

Davinci Resolve16 の変更点(Color Management)

目的 Davinci Resolve16 の Project Settings --> Color Management での変更点を確認する。 結論 Color Space と Gamma で追加&削除があった。 ColorSpace に関する変更 追加 AstroDesign Blackmagic Design Video Gamut Gen 4 Blackmagic Design Wide Gam…

YCbCr変換の係数誤り検出テストパターンの作成(一部成功)

目的 YCbCrの係数誤り(※)が発生した場合、その誤りに気づけるテストパターンを作成する。 作成したテストパターンを用いて実際にYCbCrの係数誤りを検出してみる ※詳細は前回の記事を参照 結論 YCbCrの係数誤りを判別するテストパターン作成に成功した。作成…

YouTubeの動画もカラマネされる

目的 YouTubeの動画はSDRレンジでもChrome等のカラーマネージメント対応ブラウザで再生するとカラーマネージメントされることを確認する。 ソースの画像用意 コレを使って生成。 BT.2020色域のColorChecker 動画作成 ffmpeg.exe -loop 1 -i "ColorChecker_Al…

YCbCr変換による画質劣化の可能性について

目的 YCbCr変換されたコンテンツは扱いを誤ると画質劣化が生じることを示す(※1)。 ※1 本検証は、不幸な条件が重なった状況を想定したものです。ツールと機材を正しく扱っていれば、このような画質劣化が発生するケースは非常に少ないと考えます。 背景 RGB =…

APNGのテスト

その1 その2 以上。

YCbCr変換による色数の減少

目的 RGB --> YCbCr --> RGB の変換で色数がどれだけ減るかを調べる。 背景 YCbCr変換[1]、および Chroma Subsampling[2] による情報圧縮は大変素晴らしい技術である。視覚的な情報のロスを抑えた上でデータを大幅に削減することが出来るため、我々は様々な…

Logカーブの Code Value と絶対輝度

目的 世の中では ARRI Log C、RED Log3G10、SONY S-Log3 など様々な Logカーブが提案されている。 これらの OETF の相互変換を行うために、各 Logカーブの Code Value と絶対輝度の対応関係を決定する。 Code Value と絶対輝度の対応関係が明確になれば絶対…

D-Log, F-Log, N-Log の作成&プロット

目的 以下の Camera Log(※) の OETF/EOTF の実装 DJI の D-Log[1] FUJIFILM の F-Log[2] Nikon の N-Log[3] 比較用のまとめ図のプロット ※自分が Camera Log と呼んでいるだけ。正式な呼称ではない。 背景 ここ数年、カメラメーカー各社はオリジナルの Camer…

ガンマ補正とノイズの均一化

目的 アナログ放送時代のガンマ補正はCRTの逆補正の為だけの存在ではなく、ノイズの均一化という役割もあったことを示す。 背景 Color Science に対する理解を深める上で「ガンマ補正」を正しく理解することは必要不可欠である。 幸いなことにガンマ補正に関…