Re: Image[], Graphics[Raster[]]
- To: mathgroup at smc.vnet.net
- Subject: [mg100407] Re: Image[], Graphics[Raster[]]
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Tue, 2 Jun 2009 06:49:52 -0400 (EDT)
- References: <6147782.1243412890107.JavaMail.root@n11> <200905280829.EAA14200@smc.vnet.net> <h00ctf$pdv$1@smc.vnet.net>
Hi, what do you want ? a solution to the problem or a pointer to the documentation ? And it is easy to write a similar function by your self because Graphics[Raster[]] is still working, one of the design errors in Image[] is that it has no dimension/size/position. But for the new line integral convolution one needs to place a bitmap in a coordinate system. So Mathematica *must* support Raster[] because otherwise, the line integral convolution would not work. In fact my own image processing package has a function ImageToGraphicsObject[] that make a raster from the Image[] and add a ImageRectangle option to Image[] because otherwise I would not be able to use Mathematica for my research work for image registration. So here is the one, that is documented by its source DigitalImageQ[_Image]:=True DigitalImageQ[Graphics[Raster[__],___]]:=True DigitalImageQ[img_]:=Image`PossibleImageQ[img] If[(ImageRectangle /. Options[Image]) === ImageRectangle, Unprotect[Image]; Options[Image] = Append[Options[Image], ImageRectangle -> Automatic]; Protect[Image]; ] ImageRectangle[img_?DigitalImageQ]:= Module[{pos}, pos=ImageRectangle /. Options[img] /. (ImageRectangle->Automatic); If[Automatic===pos || !MatchQ[pos,{{_,_},{_,_}}], Return[{{0,0},ImageDimensions[img]}]; ]; pos ] ImageColorFunction[img_?DigitalImageQ]:= Block[{cs,cf}, cs=ColorSpace /. AbsoluteOptions[img]; Which[ cs==="Grayscale", cf=GrayLevel, cs==="RGB", cf=RGBColor, cs==="CMYK", cf=CMYKColor, cs==="HSB", cf=Hue, True,cf=GrayLevel ]; cf ] Options[ImageToGraphicsObject]={ColorFunction->Automatic,ImageRectangle->Automatic,ColorFunctionScaling->True} ImageToGraphicsObject[img_?DigitalImageQ,opts:OptionsPattern[ImageToGraphicsObject]]:= Module[{typ,rect,raster,range,cfun,cfs}, typ=ImageType[img]; rect=OptionValue[ImageRectangle]; If[Automatic==rect, rect=ImageRectangle[img] ]; range={Min[#],Max[#]} & [Flatten[ImageData[img,typ]]]; cfun=OptionValue[ColorFunction]; If[Automatic===cfun, cfun=ImageColorFunction[img] ]; cfs=OptionValue[ColorFunctionScaling]; Raster[Reverse[ImageData[img,typ]],rect,range,ColorFunction->cfun,ColorFunctionScaling->cfs] ] Hopefully I have not forgotten anything ... mail me if yes, You can have the package for Windows/MacOS X Regards Jens lehin.p at gmail.com wrote: > On May 31, 2:32 pm, Jens-Peer Kuska <ku... at informatik.uni-leipzig.de> > wrote: >> Oh mixing is easy: >> >> img = Import["http://www.stephenwolfram.com/img/home/sw-portrait.jpg"] >> Graphics[ >> {Image`ToGraphicsRaster[img][[1]], >> Circle[{110.5, 110.5}, 10]}] >> >> draw a circle on the image. > > Hello, > Big thanks. But it looks like undocumented function. Where the > function "Image`ToGraphicsRaster" is documented? I have not found > anything in the Documentation about this. >