MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: ListDensityPlot[ ] and DensityGraphics

  • To: mathgroup at smc.vnet.net
  • Subject: [mg17064] Re: ListDensityPlot[ ] and DensityGraphics
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Wed, 14 Apr 1999 02:12:08 -0400
  • Organization: Universitaet Leipzig
  • References: <7es1fo$c82@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi Maarten,

1 & 3) I can't help you with your graphics card my SGI show all gray
levels
in correct.

2 & 4) I had the same problem with the white border and have never found
a
   solution with Mathematica. You can try to convert the image to
PostScript with

MakeHexString[a_Integer]:=
	Module[{dlist},
		dlist=IntegerDigits[a,16] /. {10->"A",11->"B",12->"C",13->"D",14->"E",
          15->"F"};
		If[Length[dlist]<2,
			PrependTo[dlist,0]
		];
		StringJoin @@ (ToString /@ dlist)
	] 

PSGrayImage[hexStr:{_String..},dims:{_Integer,_Integer}]:=
	Module[{xdim,ydim,dimrule},		
		{xdim,ydim}=ToString /@ dims;
		dimrule=	{"xx"->xdim,"yy"->ydim};
		Graphics[
			PostScript[
				"0 0 translate",
				"1 "<>ToString[N[Last[dims]/First[dims]]]<> " scale",
				ToString[2*Apply[Times,dims]] <> " string",
				StringReplace[
					"xx yy 8 [xx 0 0 yy 0 0]",
					dimrule
				 ],
				"{currentfile 1 index readhexstring pop } image",
			 Sequence @@ hexStr,
				"pop"
				],AspectRatio->Last[dims]/First[dims]
			]
		]

		

PSGrayImage[img_ /; MatrixQ[img,IntegerQ]]:=
	Module[{maxGray,dims,xdim,ydim,dimrule},
		dims=Dimensions[img];
		maxGray=255/Max[Flatten[img]];
	  PSGrayImage[
	    StringJoin /@
Map[MakeHexString,Map[Round[#*maxGray]&,img,{2}],{2}],
			dims
		]
	]

   the HexString function is a bit slow and you may reverse the gray
matrix in the last
   definition. to invert the y-direction.

Hope that helps
  Jens

Maarten.vanderBurgt at icos.be wrote:
> 
> I forgot one question: see 4. below
> 
> Hello,
> 
> I am trying to write a few simple image processing routines in Mathematica.
> Doing this I came across a few problems using ListDensityPlot and
> displaying DensityGraphics.
> I will explain these questions with a simple example.
> 

> I have the following questions:
> 
> 1.
> DensPl is a band going from black on the left to white on the right. But
> there are some additional vertical black lines in the centre of the plot.
> These lines disappear when I make the plot bigger by selecting it with the
> mouse and stretching it to say 1.2 times the original size. I get more
> vertical lines when I make the plot smaller in a similar way.
> This seems to be an error/artefact in some interpolation routine when the
> image is resized. This is rather annoying in real life images since from
> the display you can not see what is real and what is a display artefact.
> Is there a way to get rid of this artefact?
> 
> 2.
> With the options Mesh ->False, Frame->False,ImageSize->{256,50},
> AspectRatio->Automatic I was hoping the actual size of the black/grey/white
> "colored" area would exactly 50 x 256 pixels on screen (i.e. one element in
> matrix Data would correspond to one pixel in the plot on screen). But
> around the "colored" area there is a white band of 3-5 pixels wide. I there
> a way to get rid of this white band or to control it?
> 
> 3.
> - using the "True Color" setting on my display DesnPl is going smoothly
> from black on the left to white on the right.
> 
> - using the "16777216 Colors" DensPl is completely black (this is known but
> I do not know the reason: see "[mg15538] Re: ListDensityPlot gives
> PostScript error" from January 26 this year.).
> Does anyone know the difference between "True Color" and "16777216 Colors"?
> I always thought it is the same: true color = 24 bit color = 2^24 =
> 16777216 colors.
> My PC's/graphics card documentation doesn't tell me.
> 
> - using the "65536 Colors" (16 bit) setting, DensPl shows approx. 30
> vertical bands with a different grey intensity: it does not vary smoothly
> any more from black to white. I do have other graphics applications which
> have no problem with images showing a smooth grey level variation using the
> 16 bit color setting. Why has Mathematica problems doing this?
> 
> 4.
> Is it possible to invert the orientation of the vertical axis in
> ListDensityPlot?
> This would show the image like it is seen in most image processing
> applications.
> 
> Any help is greatly appreciated
> 
> thanks
> 
> Maarten


  • Prev by Date: Re: Numerical calculation of derivative functions
  • Next by Date: Re: Evaluation of args in pure functions
  • Previous by thread: Re: ListDensityPlot[ ] and DensityGraphics
  • Next by thread: Re: Re: ListDensityPlot[ ] and DensityGraphics