Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the minimal difference in RGB color values which Mathematica renders and exports as different colors?

I was amazed when I found that Mathematica gives True for the following code (on 32 bit Windows XP with Mathematica 8.0.1):

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

What is the minimal difference in RGB color values which Mathematica renders and exports as different colors? Is it machine-dependent?

like image 781
Alexey Popkov Avatar asked Oct 15 '11 20:10

Alexey Popkov


1 Answers

I believe this behaviour is machine dependent, but I do not know how exactly it depends on the OS. On my machine, it evaluates to True only when the denominator is 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

There is a difference between the two images for n<511

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

enter image description here

This difference is constant all the way through n=510 and is equal to 1/255.

Max[p2 - p1] === N[1/255]
Out[1]=True
like image 53
abcd Avatar answered Sep 19 '22 04:09

abcd