5

Mathematicaが次のコード( Mathematica8.0.1を搭載した32ビットWindowsXP )を提供していることに気付いたとき、は驚きました。True

Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]] === 
 Rasterize[Graphics[{RGBColor[0, 0, 1/257], Disk[]}]]

Mathematicaがレンダリングして異なる色としてエクスポートするRGBカラー値の最小の違いは何ですか?マシンに依存しますか?

4

3 に答える 3

4

この動作はマシンに依存していると思いますが、OSにどの程度正確に依存しているかはわかりません。True私のマシンでは、分母がである場合にのみ評価され511ます。

n = 257; 
While[(Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]] === 
    Rasterize[Graphics[{RGBColor[0, 0, 1/n], Disk[]}]]) != True, 
 n++]; 
Print@n

Out[1]=511

2つの画像には違いがありますn<511

p1 = ImageData@Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]];
p2 = ImageData@Rasterize[Graphics[{RGBColor[0, 0, 1/257], Disk[]}]];
ArrayPlot[p1 - p2]

ここに画像の説明を入力してください

この差はずっと一定であり、n=510に等しくなり1/255ます。

Max[p2 - p1] === N[1/255]
Out[1]=True
于 2011-10-15T21:00:23.417 に答える
3

Rasterize各ピクセルのRGBチャネルを最も近い8ビット値(最も近い)に丸めるように見え1/256ます。

image = Image[{{{0, 0, .2/256}, {0, 0, .7/256}, {0, 0, 1.2/256}, {0, 
     0, 1.7/256}}}, ImageSize -> 4]
ImageData@image
Rasterize@image
ImageData@Rasterize@image

ここに画像の説明を入力してください

したがって、最小の違いは、異なる色にラスタライズすることで、約0.000000000000000000000000000になるはずです...

于 2011-10-15T22:19:58.127 に答える
1

ここでの有罪者は、色の精度を切り落とすRasterizeです。ImageType[]Mathematicaが実際に他のビット深度を認識していることを確認するために助けを求めてください、しかしRasterize[]はバイトを超えて何かを破壊します。

于 2011-12-05T01:11:31.060 に答える