更新日:
Page Property: Shift-JIS, JavaScript
no [English Pages]
[Eng. Home]

Jpn.Home
ツール
プログラミング
落書き
画像
諸々
プリンタ・メモ
色計算の勘違い&疑問
関所
自己紹介
更新情報
リンク

[Back Home] / [サイト先頭へ]
Back Home

Read First / 最初に読んで

プリンタの色表現数の勘違い&疑問


ここでは、プリンタの表現色を検討する過程で、私が疑問に思ったり、うっかり間違えてしまったりしたことをメモしておきます。同じ勘違いをする人もいるかもしれませんが、メモがあれば同じ過ちをしなくて済むかもしれないからです。

1. 白黒ドットの組合せによる階調数に関する勘違い

ドットの有り無しで濃淡(階調)を得る場合の数は、ドットの有り無しの2値を4つに重複配分する組合せとして計算すれば、正しいことが分かっています。なぜなら階調(濃度差)は、ある面積内に存在する色の面積の割合で決まり、色をドットで示す場合は含まれるドットの数がそれを決定するからです。ドットの位置は無関係です。つまり0/1の2値表現ができるものをNマス目集めた時の階調数はN+1です(2HN = N+2-1CN = N+1CN = N+1C1 = N+1)。2×2の4マスなら5値、4×4の16マスなら17値です。

※重複組合わせ
n通りの物を重複を許してr個組み合わせる場合の数 nHr = n+r-1Cr
図1. 2×2のマス目で表現できる階調数

ドットの位置が変わっても、その数が同じなら同じ濃度なので、16段階の階調が存在するわけではありません。

図2. 2×2のマス目で表現できるパターン数


ところで…2×2の4マスを1画素とすると図1の通り5階調が表現できます。これを集めた場合、どう考えれば良いのでしょう?(これは白と黒のグレースケールとして示していますが、結果的にC/M/Yでの場合にも同じ事が当てはまります。C/M/Yにより8色表現可能な1マスを4つ集めたら何色?とか2×2=4マス集めたものを1画素として、更に集めた場合は?…)。

実際に、2×2のマス目で区切ったエリア(A画素)を、更に2×2個束ねた4×4のマス目(B画素)を考えてみます。5値を持った4マスを画素として、それが4つ有る場合どうなるのか?

図3. 2×2マス(A画素)を更に2×2マス集めたB画素

(1) 単純に情報理論で言うところの情報量で計算する間違い

A画素は4マスで5値表現できるという事は、そのA画素はlog25 bit ≒ 2.32 bitの情報量を持つ。それが4つあるから、B画素の情報量は2.32×4 = 9.28 bitである(これはそれぞれが5値任意に変化できるA画素が4つ集まったのだから、54 = 625としてbit換算した事に相当します)。一見もっともらしく思えます。

でも、4×4の16マスで表現できるグレー階調はそもそも幾つだっただろうと思い出してみると…、それは最初に述べた通りマス目の数+1でしたから、17値です。一旦小さなまとまりを作ってからそれを集めたら、すごい数(625値)になりました。なんだかトクした気分です。でも……本当でしょうか?

実は間違っているのです。一例として上記の計算で現れる2つのパターンを並べてみました。一番左側の図は4つのドットを持ったA画素が2つ、ドットなしのA画素が2つ。右側の残り3つの図は千鳥状に2つのドットを持ったA画素が4つです。ドットの数を数えて、それが意味するところを考えてみましょう。……どちらも同じドット数→同じ階調を示している→上記の計算には重複がある→正しい階調数計算ではない。

図4. 16マスに同じ数のドットを配置した4例

(2) 重複配分する組合わせで計算する間違い

(1)は明らかに多数の重複が含まれてしまっており、階調数を求めるには不適当な計算であることが分かりました。ならば重複を排する計算をすればよい訳です。ところで、最初に0/1をNマスに配置する階調を求めた時に使った計算は、重複を排した計算ができていました。ならば、1マスがn階調であるものをrマスまとめたとして考えれば、重複のない計算ができそうに思えます。ではさっそく計算。

5値を4つに重複配分する組合せは、5H4 = 5+4-1C4 = 8C4 = 70値です。変ですね。4×4の16マスで表現できる階調は17値でしたから、これもなんだかウマ過ぎます。でもこれは重複を排する計算であったはずだし…。

(1)の例よりは、分かり難いので実際に組合わせを書き下して検討してみましょう。5H4 = 70のパターン組合せを、各桁がB画素の4マスのそれぞれの位置を示すと見立て、A画素の5階調を0,1,2,3,4(即ちドットの数)と見立てると、

0000, 0001, 0002, 0003, 0004, 0011, 0012, 0013, 0014, 0022, 0023, … , 0144, 0222, 0223, 0224, … , 4444

確かに70通りあります。一見、書き下しても何ら重複が無いように見えます。でも更によく見ると…隠れた重複が発見できます。
例えば0002と0011はドットが2つである事に変わりはなく、0222と0024, 0033, 0123,…,1104もドットが6つである点で同じです。つまり思惑とは違って重複を排除しきれていません。結局、それらを排除していくと、やはり17通りにしかならないのです。


2. 色ドットの組合わせに関する勘違い

雑誌やカタログに書かれている色の記述で、しばしば「C/M/Yを同じ位置に配置することで補色のR/G/Bが生み出せる」風な表現に出くわします。なるほど、確かにC/MでB(青) M/YでR(赤)、C/YでG(緑)が生成されます(実際には微妙に違う色の気もするけど…まぁ別の色に見えるという事で…)。C/M/Y無しの白、C/M/Y全部の黒を合わせれば8値なので、例えば1/600dpiのインクジェットで1/600インチ四方にC/M/Yの3つを落とせば、そのセルは8色を表現できます。まるでプリンタが元々8色のインクを持っていたかのように見えます。

では、そのプリンタで2×2の4マスを1画素とした場合、その画素は何色の表現が可能なのでしょう?

4マスとも任意に8値を取る事ができるから、84 = 4,096でしょうか?なるほど1マスは0/1の2値の3色表現なので3bit。それが4マスあれば3×4で12bit、即ち212 = 4,096です。パソコンやbitを見慣れていると、ついやってしまいますが、間違っています。以下の2つの観点で検討してみます。


(1) 結果として発生した色まで基本色であるかのように計算している

そもそもプリンタはC/M/Yしかもっていないのです。例えばRがどこから来たのかといえば、それはMとYを2つ組み合わせたことによって生じています。G/Bも同じ話。ですから、58や56として累乗計算して得られる色数の中には、例えばRとMを組み合わせた色や、RとGを組み合わせた色も含まれています。では、その色を作るには?…RとMならM/YとM、RとGならM/YとC/Yという様に1つの基本解像度のマス内に同じ色のインクを2つ落としたり、全部で4つ落としたりする必要があります。普通の600dpiプリンタにはそんなことできません。それに[プリンタの色数:1.3. 表現可能な色の数(実際値)]に記述した通り、1マスに噴射できるインク量には制限があります。更に言うなら、RとCの組合わせはM/Y/Cつまり黒になる組合わせであり、RとCでなくC/M/Yの組合わせとしても数えているはずの色です。

結局何がおかしいのかといえば、擬似的に発生した(あるいは結果として発生した)色が元々独立して存在したかのように計算してしまうことに問題があるのです。まるでブートストラップ[*1]です。これは結局§1.(2)と同じ種類の過ちです。

[*1] ほらふき男爵が、沼に沈んだ時、自分の靴紐(boot strap)を自分で上に引っ張って助かったとか言う話…無から有を生むこと。
PCの起動では、ROMやFDに書き込まれた(あるいは手動で入力した)小さなプログラムローダがより大きなプログラムローダを読み込んで…を繰り返して立ち上がりますし、ソフトウェアの開発では、低レベル言語で高級言語を作り上げたり、旧型OS上で新OSを作成していきますので、まさにブートストラップなのですが…。


(2) 位置情報を含んだ数まで数えてしまっている

§1(2)と同じ種類の間違いとともに、§1(1)で記したのと同じ過ちも犯しています。先の計算結果には、例えば、C/M/Yのあるマスとインクのないマスが並ぶ場合と、C/MのあるマスとYのあるマスとが並んでいる場合も含まれていますが、マス目が十分小さいなら、ヒトが見た時に感じるのはまとまった領域の積分値でしかありませんから、実質同じです。結局積分値として違いを生じるためには、含まれる色ドットのうち最低1ドットが異なっている必要があります。

図5. 2×2のマス目で実質同じ色となる一例

□□
□□
□□
□□


□□
□□
□□

□□

□□



□□
……

場合の数は、結局[フルカラーの画素:1.2 カラー画像の階調数]で記したように、各基本色の階調数を求めて、それを色数だけ組み合わせた数となります(これなら最低1つは異なった状態となります)。4マスで表現できる階調は5値(これはC/M/Yのいずれも同じ)。その各状態が組み合わさるので、真に表現できる色数は53 = 125値となります。


[To Top] / [ページ先頭へ]

3. 色ドットの組合わせに関する疑問・考察

インクジェットプリンタの基本色C/M/YまたはPC/PM/PYによって得られる色は、実際のところどう考えればよいのか?

もしも塗り重ねていけば、だんだん黒になる。しかし重ねずに横に並べるようにすれば(反射光)の合成と見なせるので本当の光の合成のように白は作り出せないまでも、比較的明るい色のバリエーションが得られる。塗り重ねられる場合には、暗い色の表現は塗り重ねで対応し、明るい色の表現は並べることで対応できる。旧来型プリンタおよびDJ 720C/DJ 1120Cはこのタイプか?
しかし色がただ並ぶだけでなく、合成色となるのなら、単純な重複組合わせでは数え方が足りないか…?(←これは§2.(1)に当てはまるから関係ないハズ)

→ でも、CMY各色が重なり合うように配置されたドットと重ならない様に隣に配置されたものは、基本色の量が同じでも見た目の色は違うことになる気もするし…その辺の事は理屈が上手く整理できていないので、まだ書かない。検討中

一方インクの吸収限界による制限あるいは明確な意図によって色インクを重ねない場合には、明るい色のバリエーションは豊かな反面、暗い色が苦手になる。それを補うために黒を近くに配置する方法が考えられる。単純に得られる計算値(色数)は多いけれども、実際の表現エリアは狭いかも。PM-750Cなどは同じ位置にインクを2滴落とせない事から推測すると、こうなるのだろうか?実際、暗い側のグラデーションは急激な段差が有るように見受けられ、理屈としては合っている気がする。吸収限界を無視して塗り重ねるか、より吸収能力のある用紙で複数滴落とせるようにしているのか?

[2001-02-25 追加]
インクが重なる場合と、重ならずに散らばる(並ぶ)場合とでの明るさに関して。

不透明なインクの場合は当然ながら同じ場所に塗り重ねた場合に、後に載せたインクの色だけが反射することになり、色のバリエーションは増えませんから議論から除外します。

色素を液体に溶かし込んだインクを噴射するインクジェット型の場合は、同じ場所にインクを重ねて噴射しても、インクが乾くまでの間に重ねれば液体の中で色素が交じり合います。だからミクロに見れば全く同じ位置に色素が重畳してしまう確率は低く、並べて重ねるのと同じかもしれません。

一方、透明なインクを使用する熱転写型の場合では、色素が液体中で交じり合うわけではないので文字どおり重なります。その場合、複数の色が重なった部分は、暗くなります。例えばYの上にMインクがある場合で考えると、光はまずMを通過してYに到達し、更に紙へ到達します。それが再度Mを通過して目に届くことになります。

図示すると以下の通り。

[光を透過するインクの場合]
          M(B&R反射)  Y(G&R反射)  紙(全反射と仮定)
光→→       |G吸収&透過…→ |         ‖
  ←B&R=M反射|         |         ‖
  ←…G吸収&透過|     ←G反射|         ‖

[光を透過しないインクの場合]
          M(B&R反射)  Y(G&R反射)  紙(全反射と仮定)
光→→       |         |         ‖
  ←B&R=M反射|         |         ‖
          |         |         ‖

インクが重なった部分(あるいは密になった部分)は暗くなりますが、インクが紙の側に乗らない面積が増えることになり、紙からの反射(全反射と仮定すればRGB全成分)も増えるため、結局は相殺されるようにも思えます。

光を透過するインクも、人の目には見えない程度に隙間があるように塗られるインク、透過しないインクはインクとインクがくっつき合うか、分子サイズが大きいかなどの理由で、隙間が無くなった状態で塗られるインクと考えてよいのかもしれません。もしそうならば、並べ方の違いとして論じても良いかもしれません。

その場合、目で認識できない大きさ(例えば分子レベル)で横に密に並び、重ねない場合は疎に並ぶ場合は、結局のところ濃度は同じハズです。けれど、並びのパターンが認識できてしまう場合には、人はインクの量とは別の要素であるパターンを色の違いとして感じてしまうのではないかとも思えます。

例:以下は900ドットを白と黒の1ドットで均等に塗り分けた例と、白黒4ドットで均等に塗り分けた例です。パターンが見える状態の場合には違いを感じてしまいますが、パターンが認識できないくらい小さい場合(あるいは遠くから見た場合)には差を感じません。

等倍表示2倍表示
等倍表示の2種類のメッシュ 4倍表示の2種類のメッシュ

[To Top] / [ページ先頭へ]
※このページは、私個人がプリンタに関して考えていることをWeb上に公開しているだけであり、内容の正当性に関する保障はしません
[Jpn.Home] | [ツール] | [プログラミング] | [落書き] | [画像] | [諸々] ::プリンタ・メモ :::色計算の勘違い&疑問 | [関所] | [自己紹介] | [リンク]