Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Exporting Density Plots -- one pixel per point?

8 views
Skip to first unread message

quintessentialk

unread,
Feb 13, 2006, 3:15:59 AM2/13/06
to
Hello,

I wish to generate large bitmaps (tiffs, say) where each the greyscale
color value of each pixel is determined by a given function of x and y.
By large, I mean more than 9E6 pixels.

I've tried using a density plot for this, and then a rasterized table,
but I run into a couple of difficulties. First, if I use pixel counts
which approach this order of magnitude, I get memory errors -- on a
win32 machine with 2GB installed. Second, if I make do with a smaller
pixel count, I have trouble exporting the plot in a truly
one-pixel-per-data-point fashion. (The process is time consuming, and
results are unconvincing).

I think the problem is the way Mathematica internally tries do
everything in a resolution independent way, which I don't want here.

Ideas?
Questions?

(The specific application is to generate high resolution print-outs of
holographic patterns which can later be imaged to photographic film.
After appropriate development and bleaching, the exposed film can be
used as a transmission hologram to couple gaussian laser beams into
other interesting modes.)

Thank you.

Maarten van der Burgt

unread,
Feb 14, 2006, 1:37:14 AM2/14/06
to

Hallo,

The following results in a gray scale TIFF file which is exactly
3000 x 3000 pixels.
The Export to the hard disk takes 0.7 sec on a Pentium M, 1.6 GHz, 500 Mb
portable PC with Mathematica 5.0 and Windows XP.

Hope this helps,

Maarten

w=3000;
h=3000;

dat = Table[Random[Integer, {0,255}],{h},{w}];

gr =Show[Graphics[Raster[dat,{{0,0},{w,h}},{0,255}]],
PlotRange\[Rule]{{1,w},{1,h}},ImageSize\[Rule]{w,h},
AspectRatio\[Rule]Automatic,DisplayFunction\[Rule]Identity]

Timing[Export[CurDir[]<>"image.tif", gr, "Tiff"]]



"quintessentialk"
<quintessentialk@ To: math...@smc.vnet.net
gmail.com> cc:
Subject: Exporting Density Plots -- one pixel per point?
13/02/2006 09:15

Yasvir A. Tesiram

unread,
Feb 14, 2006, 1:50:23 AM2/14/06
to
Hi,

As a first suggestion I would say, work with off-screen graphics (i.e. set
option DisplayFunction -> Identity).

Here is one example, on a Centrino 2.0GHz laptop, 1GB RAM, Mathematica
5.2, Linux kernel 2.6.

d = Partition[Table[i, {i, 3000*3000}], 3000];

In[8]:=
Length[d]

Out[8]=
3000

In[11]:=
fig=ListDensityPlot[d,Mesh -> False, DisplayFunction -> Identity,
PlotRange -> All];//Timing

Out[11]=
{0.000999 Second,Null}

(* I imagine that using custom colour functions for so many pixels will up
the time a great deal *)


In[13]:=
Export["example.tif",fig,"TIFF"];//Timing

Out[13]=
{12.6071 Second,Null}

The output looked OK to me on GIMP.

Good luck. Sounds like some pretty smick imaging to me.

Yas

0 new messages