Windows(Vista以降)のカラーマネジメントについて誤解がある件

WindowsのカラーマネジメントについてWCSが裏で勝手に処理してくれる、とかWindowsはsRGBだから○○、とかいう話がじわじわとはびこっているようなので、話の出所が気になって尋ねてみたところ例の記事が出てきました。 他の方もあの記事を読まれているんでしょうか……。 ※リクエストがあれば可能な範囲で解説など追記します
14
やまかわ aka やんま ま @yamma_ma

先ほどお話をさせてもらった人もVista以降のカラーマネジメントに関してデジカメWatchの記事(http://t.co/g144IJQAri)を読んだとのことだった。

2013-08-27 15:58:14
やまかわ aka やんま ま @yamma_ma

やはりあの記事が誤認・誤解の元凶なのだろうか……

2013-08-27 15:58:40
やまかわ aka やんま ま @yamma_ma

Windowsのカラマネがよいか悪いかはともかく、誤った情報を前提に考えるとどうしてもWindowsでカラマネ運用するにあたって適切な判断やアプリの使いこなしが妨げられてしまうわけで、それは大変不幸なことなのである。

2013-08-27 16:01:15

元発言と当方が行った説明

と゛うてい @dt_1981

Vista以降は"対応ソフト限定で"WCSで強制的にsRGB化して表示するから、どんな処理が行われてるかユーザーからは見えないので自前でプロファイル持つPhotoshopに行き着くんだろうけど

2013-08-27 11:18:49
やまかわ aka やんま ま @yamma_ma

@iron_u_say_ 「WCSで強制的にsRGB化」というのは事実と異なる(強制的に変換というのはない)のですが、その情報はどちらで得たのでしょうか。あるいはご自身で何らかのテストを行ってそう判断されたのでしょうか。

2013-08-27 13:53:45
と゛うてい @dt_1981

@yamma_ma この記事で http://t.co/xETRXV3Ipn ”、Vista内部ではsRGB色空間の情報が割り当てられて処理が行なわれるようになっている。 ”という記述が有るのでWCSがそういう処理を行っていると思っていたのですが、間違っていましたか

2013-08-27 15:08:21

該当すると思われる記述

(引用)
しかしWindows Vista上で動作するすべてのアプリケーションは、カラー画像のすべてに関して、内部的に色特性が割り当てられた状態で処理される。Vistaの新機能に対応したソフトウェアはもちろん、従来の、しかもICMに対応していないソフトウェアも、Vista内部ではsRGB色空間の情報が割り当てられて処理が行なわれるようになっている。
(引用終わり)

実際にVista以降でアプリケーションの挙動を注意深く見ている人なら説明されている通りの動作をしているのか?という疑問を感じてもおかしくない内容です。
しかし、実際問題ICM/WCSを使用するカラマネ対応アプリケーションがほとんど入手できない現状ですので、そもそも疑問に感じることすら困難だったということなのかもしれません。

やまかわ aka やんま ま @yamma_ma

@iron_u_say_ あの記事は実際の動作や状況をうまく説明できていない箇所、誤認が疑われる箇所が少なくはないですね。掲載当時の情報では仕方がなかったのかもしれませんが訂正はすべきだと感じます。

2013-08-27 15:24:04
やまかわ aka やんま ま @yamma_ma

@iron_u_say_ あの記事の情報を前提に考えると実際のアプリの挙動をうまく解釈することができない(何が起きているか説明できない)状況が普通に出てくると思うんですけどね……

2013-08-27 15:31:10

ICM 2.0とWCSのAPI

WCSプロファイルを扱うための関数やデバイスとプロファイルの紐付けをユーザー毎に行えるようにするための関数などが増えた以外はほとんどICM 2.0そのままです。

そもそもICMのAPIって何するものなの、って話ですが主なものをまとめるとこんな感じです。

・プロファイルを扱うための関数

  • プロファイルを開く・閉じる
  • プロファイルの情報を取得する
  • デバイスに関連づけられたプロファイルを取得する など

・カラースペースの変換を行うための関数

  • Transform(変換表のようなもの)を作成する
  • Transformを使用してビットマップを変換する など

・GDI/GDI+のカラーマネジメント処理に関わる関数

  • デバイスコンテキストに対するICMのオンオフ
  • デバイスコンテキストの入出力カラースペースの選択
  • 設定ダイアログ(スクリーンショット) など

・その他

  • CMMの登録・登録解除、選択
  • ビデオカードガンマテーブル(vcgt、いわゆるソフトウェアキャリブレーションの情報)の設定 など

GDI/GDI+で図形を描画する程度の話であれば、ICMをオンにすれば基本的なカラーマネジメント処理が実行されますが、それにしても「オンにする」という操作が必要です。
より高度な描画を行いたい場合や画像を扱いたいのであれば、自前でTransformを作成するか、WIC(後述)のAPIを使用して変換を実行することになります。どちらにしてもsRGBが強制される、とか何もしないでいても必ず裏で変換が実行されているというのは誤りです。

GDI/GDI+による描画のカラマネ対応については、

やまかわ aka やんま ま @yamma_ma

@iron_u_say_ ついでなので少し説明しておくと、WCSのAPIはICM 2.0のそれを引き継いで拡張したものです。大半はICM 2.0由来のAPI関数となっています。Vista以降にはICMとWCSが両方載っていて旧来のカラマネ対応アプリはICMが、Vista以降……

2013-08-27 15:37:05
やまかわ aka やんま ま @yamma_ma

@iron_u_say_ 専用のカラマネ対応アプリはWCSが使われる……のではなくて、どちらも同じくWCSが動作します。ただし、ICCプロファイルだけ使う分にはICM 2.0と同じ動作になるので、WCSプロファイルをきちんとハンドリングできるアプリが実際にWCSプロファイルを……

2013-08-27 15:39:58
やまかわ aka やんま ま @yamma_ma

@iron_u_say_ 使用する場合に限り、WCS本来の性能が発揮されることになります。で、APIが共通である以上、アプリの側がWCS/ICMを使うように作られていなければ何も働きませんのでVista以降専用かどうかに関わらずカラマネ非対応ならRGB値を右から左に流すだけ……

2013-08-27 15:44:21
やまかわ aka やんま ま @yamma_ma

@iron_u_say_ になるのもこれまで通りです。Windowsに付属のアプリ・ツールは何もしていないものもあれば、自前で処理しているものもあるでしょうし、WIC(Windows Imaging Component)を通して間接的にWCS/ICMを使用しているものもあります。

2013-08-27 15:47:59

WICについて

WICは画像(ファイル)の入出力を担当するフレームワークで、Vista以降のWindowsで利用可能(XPはSP3もしくは個別インストールが必要)です。

ICM/WCSの基本的なサポートが含まれており、カラースペースの変換や埋め込みプロファイルの読み書きが可能です(プロファイルの読み書きは各ファイル形式に対応するコーデックの仕事でありICM/WCSが関わる領域ではありません)。

また、Exifの色空間情報から画像のプロファイルを選択するAPIが用意されているので、それを利用すれば(カラマネ的な意味で)Exif対応のアプリケーションを実装することができます。

やまかわ aka やんま ま @yamma_ma

@iron_u_say_ (どれがどれに該当するかは挙動から判断するしかありませんが)システムの処理に丸投げで実現されているわけではないのは確かなので、付属アプリの動作を見てサードパーティー製を含む全てのWindowsアプリがそうだと思い込むのはややこしいことになってしまいます。

2013-08-27 15:51:56