7tvr\\\\\jNNN^ h"xN 6L*v\ColorImage 1.32 Joseph Ayers Marine Science Center Northeastern University East Point Nahant, MA 01908 (617) 581-7370 Internet: lobster@northeastern.edu Applelink: U0729 and Garth Fletcher Fletcher Applied Sciences, Inc. Marcel Road Mason, New Hampshire 03048 About NIH Image NIH Image is a public domain program for the Macintosh II for doing digital image processing and analysis created by Wayne Rasband at NIMH. It can acquire, display, edit, enhance, analyze, print, and animate images. It reads and writes TIFF, PICT, and MacPaint files, providing compatibility with many other Macintosh applications. It supports many standard image processing functions, including histogram equalization, contrast enhancement, density profiling, smoothing, sharpening, edge detection, and noise reduction. Spatial convolutions, with user defined kernels up to 63x63, are also supported. Image can be used to measure the area, mean density, center of gravity, and angle of orientation of a user defined region of interest. It also performs automated particle analysis and can be used to measure path lengths and angles. Measurement results can be printed, exported to text files, or copied to the Clipboard. Results can also be calibrated to provide real world values. It provides MacPaint-like editing of color and grayscale images, including the ability to draw lines, rectangles, ovals and text. It can flip, rotate, invert and scale selections. It supports multiple windows and 8 levels of magnification. All editing, filtering, and measurement functions operate at any level of magnification and are undoable. It uses digital halftoning to print images on PostScript printers and Floyd-Steinberg dithering for printing on non-PostScript printers. It supports either the Data Translation QuickCapture card or Scion Image Capture 2 card for digitizing images using a TV camera. Acquired images can be shading corrected and frame averaged. For full operation, Image requires a Mac II(x, cx, ci) with at least 2 megabytes of memory, but 4 megabytes, or more, is recommended for doing animation, for simultaneously displaying more than a handful of pictures, or for running under MultiFinder. NIH Image also requires an 8-bit video card capable of displaying 256 colors or shades of gray. About ColorImage ColorImage is a enhancement of version 1.32 of the NIH Image Program. It adds support for the DataTranslation ColorCapture frame grabber as well as the Aapps DigiVideoColor frame grabber. At present it is a development platform that implements algorithms for the segmentation and analysis of blobs from true color natural scenes as well as a homebrew QuickTime like video interface for frame-by-frame kinematic analysis from videotape. Bear in mind that this program has extensive memory requirements. It will work on the smallest of images at 1.5 mByte but really requires at least 3. The video tape control features do not, at present, work under virtual memory.. Image segmentation is supported by two new menus, 8-Bit Color and RGB color on the right of the menu bar. The only changes to the internal code of Image are in the LUT window that now has a white stripe down the right, the new color histogram display and some slight modifications to the camera including the modules for acquisition of RGB images. When the 8 bit LUT based segmentation algorithms are in operation, the white stripe in the LUT window will contain horizontal black stripes that indicate which image pixels have been segmented. We have modified Rasband's Histogram to simultaneously display the color look up table with the pixel frequencies. This display is useful for determining whether hue segmentation using Thresholding will work on an 8 bit ColorImage.  The goal of our segmentation algorithms is the quantification of objects within biological images so the analysis typically proceeds in three stages as illustrated in the above figure: (1) Generation of Color Images. ColorImage is designed to acquire images from RGB video sources. One first uses the Create RGB Files or Create Averaged RGB Files operations to sequentially acquire Red, Green and Blue plane files from the RGB source and then Get RGB Files to read them into ColorImage. Get RGB files will open files created by other programs as long as they are named File_Spec/RED, File_Spec/GREEN, File_Spec/BLUE, etc. Selecting the Make Composite RGB Image procedure will then create a 32x32x32 RGB LUT, an 8-bit indexed color LUT and an indexed composite color image. (2) Segmentation of objects from ColorImages. At present we support two levels of segmentation. One operates on the 8-bit CLUT of an indexed composite image while the other operates on the lower 5 bits of the Red, Green and Blue components of an RGB image. The latter analysis requires an RGB source and an 8 bit frame grabber that can be switched between the R, G and B planes or the Red, Green and Blue files generated by such a source. The result of this analysis is the generation of a binary image where the pixels within the segmented class are black and the rest of the image white. The RGB region segmentation algorithms currently represent the segments of different classes in different "average" colors but these can be converted into the binaries with the RGB thresholding procedure described below. (3) Segmentation and quantification of the individual region objects. We originally supported this function in a previous program (ImageSegmenter) as a variation on the Papert's Turtle edge tracing algorithm and Rasband has incorporated this function into the body of Image as the "Magic Wand" and "Analyze Particles" tools that operates on points rather than image pixels. Version 1.32 now supports automatic segmentation of the different objects and deals with the edge bound objects, internal holes, etc.. The functionality within the added menus is as follows: 8-Bit Color Menu The 8 bit color menu supports the segmentation and generation of binarized segmented images from any indexed color file. It also allows the segmented images to be saved as MacPaint style bitmaps that compresses them and allows them to be imported directly into most word processors. CLUT Segments ColorImage supports the segmentation of objects from indexed color images on the basis of sets of entries from the 8-bit color look-up table (LUT). The LUT window has been modified from Image to indicate the selected entries by a black bar to the right of each entry. The selected segment can be constructed iteratively by a variety of segmentation algorithms supported under the 8-bit Color window. On such files RGB threshold and Region segmentation will do a passable job of segmentation. The Sort Palette function under the Video menu will allow Thresholding on the basis of Hue, Saturation or Brightness for files generated by other sources than ColorImage. The following algorithms work on 8-bit indexed color files only! Add Thresholded CLUT Segment This procedure creates a binary image of the image pixels that fall within a specified range of gray scale values or color LUT entries. The procedure functions similarly to Rasbands Make Binary operation but includes the logic necessary for blob quantification of CLUT color segments. The range of gray scale values is normally selected with the Threshold option from the Options menu. To use this algorithm first select the range of pixel values with the CLUT tool in the color window and then select Add Thresholded CLUT Segment from the 8-Bit Color menu. The algorithm then creates a segmented binary image of all the pixels that fall within the LUT range. If the CLUT of a color image is sorted on the basis of hue, intensity or pixel frequency, Threshold Bitmap Segmentation can be used to segment on the basis of those features. Subtract Thresholded CLUT Segment This algorithm allow the user to subtract a range of CLUT values from from a CLUT Segment. It is the opposite of Add Thresholded CLUT Segment. It requires that thresholding is operational and generates a binary image of the resultant CLUT segment Add RGB Cluster Segment This algorithm creates a binary image of all image pixels that fall within a RGB cube in RGB space, centered around a selected color. To use it first select a pixel color from the image using the eyedropper tool. The color the users select will appear in the paint brush icon on the tool palette. If the user then selects RGB Threshold Segmentation from the 8-Bit Color menu they will be presented with a Dialog box that requests a RGB radius. This is a distance in RGB space (0 to 64000 in the R, G and B planes) within which pixels will be selected for segmentation. For example if the user selects a color RGB, the algorithm will segment pixels with values within R RGB Radius, G RGB Radius and B RGB Radius. The algorithm then creates a segmented binary image of all the pixels that fall within that RGB cube. Add Region CLUT Segment Many objects in biological images are represented by heterogeneous colors. For example, a sponge image may be made up of orange, brown, yellow and green pixels. Region bitmap segmentation allows one to acquire and segment on the basis of heterogeneous color sets. This tool utilizes the lasso tool to select a region of pixels. The algorithm will then select which CLUT colors were within the selected region and segment a binary image of the image pixels with the corresponding values. Be careful in selecting regions that contain extremely dark (i.e. black) pixels as these are present in most objects. The user is better off selecting regions that contain pixels that appear unique to the objects to be segmented. Subtract Region CLUT Segment Region difference segmentation allows the user to specify a region of pixels that are to be excluded from the segment. The resulting binary image will exclude the selected LUT entry pixels that were selected. This selection is useful for removing "ambiguous" pixels that are common to two objects in an image. Reset CLUT Segment This function clears the entrys in the currently selected CLUT segment. Interactive VideoTape-Based Acquisition and Control ColorImage also supports motion analysis through interactive video tape control. This allows analysis in the laboratory of data recorded in the field with CamCorders or tape decks We have been quite successful importing images from Sony High-8 recorders and camcorders. The EVS-900 recorder allows acquisition from interchangeable lens cameras allowing acquisition from microscopes but has an aliased video signal in pause mode. The CCD-V5000 camcorder supports a digital frame buffer to provide complete NTSC frame in pause mode and features an internal time base correcter that provides excellent synchronization with the frame grabber. The CCD-V5000 is clearly the device of choice when frame acquisition must be performed in pause mode and can be used to record from interchangeable lense cameras when in VTR mode. We have integrated the video tape control toolkit available from the developer of OnTrack, (Abbate Video Consultants, Norfolk, MA (508) 520-0199) to both catalog video tapes as well as to control the video deck from ColorImage. The OnTrack consists of a Hypercard stack that can be used to index a tape as well as a cable which interconnects the Mac Serial port to the Control-L (LANC) and Control-S ports of the Sony decks. To use this interface, you need to purchase the cable from Mr. Abbate. The video tape control toolkit implements a direct interface from the Mac serial port to the Control-L and Control-S editing controller interfaces of the Sony decks and camcorders. In addition, the tookit implements a SIMPTE time code reader for more precise synchronization. ColorImage supports two dialog boxes that allow control via the Control-L and Control-S ports that support Sony editing controllers.  S Port Tape Controller The Control-S interface is a unidirectional interface that allows the application to send control commands to the deck. Control-S devices can be daisy chained and up two three different devices can be controlled through the same port. Our implementation of the Control-S interface allows control of play, stop, record, fast-forward, rewind modes as well as pause and single frame forward and backward motion from pause. The dialog allows selection of one of three devices for control. The Control-S dialog is illustrated below.  L Port Tape Controller The Control-L interface is bidirectional and is capable of both transmitting control commands from the application to the deck as well as receiving status and counter information from the deck. Our implementation of the Control-S interface allows control of play, stop, record, fast-forward, rewind modes as well as pause and single frame forward and backward motion from pause. The dialog allows selection of the three major counter/timer formats utilized in the Sony Decks. The dialog reports the deck time, counter values and the current deck status continuously The dialog also supports interactive searches for data segments at particular times or counter values (The Control-L dialog is shown below)  Parameterize Movie The parameterize movie function implements a set of algorithms for time-based analysis of object parameters from movies. These functions generate specialized display lists or tab-delimited files of the selected parameters where the first column is the frame time and subsequent columns are the measured parameter in each of the frames of the movie. The functions feature aural prompts for the features to be acquired from each of the frames of the movie. These files are useful for time-series of motion (eg. joint angle vs time, growth of particles, changes in shape, etc.). The different forms of analysis are selected from the following dialog. Undulations This procedure is specialized for the generation of display lists of the body shape of undulating organisms. To use it, make a movie from above with the swimming specimen in a pan with a white background, calibrate the image of one frame and select Digitize Undulations. The user will be prompted for a file header, a file name and for each of the frames of the movie, a frame descriptor, and a click on the position of the nose and the tail. The program then automatically traces two sets of coordinates that define the shape of the left and right sides of the body axis. The algorithm outputs a file that is the basis of a suite of programs for the quantitative analysis of swimming behavior (see Ayers, 1989 for a review). Shapes This function is similar to the undulations algorithm except that is supports manual tracing of the shape of the specimen. Angles This function allows one to enter a measured angle using the angle tool for each of the frames of a movie. It generates a tab delimited file where the first column is the frame time and the second column is the angle. Distances This function allows one to enter the distance between two points using the ruler tool for each of the frames of a movie. It generates a tab delimited file where the first column is the frame time and the second column is the distance. Positions This function allows one to enter a the x and y coordinates of a point using the cursor for each of the frames of a movie. It generates a tab delimited file where the first column is the frame time, the second column is the x coordinate of the point and the third column is the corresponding y coordinate. Areas This function allows one to enter the area of a blob using the magic wand tool for each of the frames of a movie. It generates a tab delimited file where the first column is the frame time and the second column is the area of the blob. Interpolate Even Field This function is useful to clean up video images which are acquired from the Sony decks in pause mode. Pause mode images only consist of the odd video field. This filter performs a linear interpolation of the even field lines followed by a median filter. Clean Up Movie This function sequentially steps through all the frames of a movie and performs the even field interpolation described above. VideoTape-Based Movies Stepping High-8 Frame Movie This function allows one to digitize sequential images from video tapes on a frame by frame basis. The user pauses the deck on a frame of interest and selects a region for digitization. The program requests the number of frames to be digitized (limited only by free CPU memory) and the number of video frames to skip between each acquired frame. and The program then opens a new window of the appropriate dimensions, grabs a frame, then opens a new window, advances the deck to the next frame and repeats this process until the specified number of frames is acquired. This function only works well with the CCD-V5000 CamCorder which outputs a full frame in pause mode. Stepping High-8 Field Movie This algorithm performs the same function as the Stepping High-8 Field Movie algorithm except that it performs an even field interpolation and median filter prior to stepping the the subsequent frame. Moving High-8 Movie This algorithm is similar to Rasband's Make Movie function except that it allows timed acquisition from a moving video tape. To utilize this function one pauses the deck on a frame of interest and selects a region for digitization. The program requests the number of frames to be digitized (limited only by free CPU memory) and the interval (seconds) to between each acquired frame. The program then opens a set of new windows of the appropriate dimensions, rewinds the tape and places in play mode and then waits for a trigger. The cycle of video acquisition can be triggered in one of two fashions. The program polls for the method of choice and if counter value is selected polls for the counter value. The standard fashion is to play until the Control-L interface receives the requested counter value. We have tested this with SIMPTE coded tapes and found it to be accurate to within 2 video frames. A more accurrate method of synchronization is to dub a noise burst on one of the analog channels of the tape. When this method is chosen, the A/D converter samples that audio channel until it detects the burst then initiates acquisition after a 500 msec. delay. Once the acquisition cycle is initiated the frame grabber acquires frames at the specified interval (up to 20/sec for small selections) until the appropirate number of frames is acquired. The algorithm then places the deck in pause mode. Stereo Analog Acquisition We have recently added modules to ColorImage to allow acquisition of stereo analog information which is temporally syncronized with corresponding digital movies. We use this functionality to directly correlate electrophysiological and electro-myographic recordings with kinematic analysis of animal behavior. Analog acquisition is supported with the GW Instruments MacAdios II board through the Turbodrivers and DataManipulation libraries. To use these routines one must connect the left channel of the video deck to the A0in channel of the break-out connector and the right channel to the A1in channel of the break-out connector. If one wishes to generate audio noise bursts for synchronization, one must connect analog output channel 2 of the breakout connector of the MacAdios to the right microphone channel of the video deck. Moving Analog Acquire This procedure is the audio equivalent of the Moving High-8 Movie procedure and operates in a very similar fashion. The procedure requests the name of the video tape, an output file specification, the duration of the sample to be acquired, a sampling interval (sec), the type of triggering to be performed and an optional counter value. The program then opens a set of new windows of the appropriate dimensions, rewinds the tape, opens a "digital oscilloscope" window, places the deck in play mode and then waits for a trigger to initiate acquisition. The acquired data is plotted, rescaled, replotted and annotated. Dub Analog Synch Pulse This procedure records the current counter value, rewinds the deck and then dubs a 100 msec noise burst on the right audio channel which is used for synchronization in the Moving High-8 Movie and Moving Analog Acquire routines. Find Noise Burst This procedure searches the tape for noise bursts. When it finds one it pauses the deck. Set MacAdios Slot The defalut slot setting for the MacAdios board is slot 5. This procedure lets one change the default. We will soon superscede this with an automatic slot finder. Change Frame Grabber ColorImage supports three frame grabbers, the DataTranslation QuickCapture, the DataTranslation ColorCapture and the Aapps DigiVideoColor Frame Grabber. This menu selection brings up a dialog which allows you to switch between them if you have more than one installed in your machine. Toggle ColorCapture as Desktop The ColorCapture frame grabber has a NTSC video output which can be switched between pass-through mode where it displays the frame buffrer contents or a DeskTop mode where it displays a segment of the Quickdraw Desktop. This menu selection toggles between these modes. RGB Color Menu To enter color information into Image from a video source the user can use the Data Translation 8-bit Frame grabber only if it is connected to an RGB source. The user must hook up the RGB source such that the Red output is connected to the #1 input of the QuickCapture Card, the Green output is connected to #0 input and the Blue output is connected to the #2 input. ColorImage does not support the Scion board for color image acquisition. Color files can be acquired and merged as shown below under Grab RGB Selection and Merge Colors. The following algorithms require an RGB video source and/or files digitized separately from the Red, Green and Blue planes of any RGB source. Make Composite RGB Image This procedure links the Red, Green and Blue files for color segmentation. If three RGB files have been opened in the order red, green, blue, this function will create a 3D 32x32x32 RGB CLUT as well as an 8 bit CLUT by several derivatives of the median cut algorithm and generate an 8-bit indexed color display of the pixel map in a window titled "Indexed Color". The Indexed Color window is subject to 8 bit CLUT segmentation by choices in the 8-Bit Color menu. Be sure to save this file to disk before trying any of the segmentation algorithms. The purpose of the 3D RGB CLUT is to allow adaptive region based segmentation in RGB Space. The 3D RGB CLUT can be displayed using the View RGB LUT selection described below while the RGB pixel frequency histogram can be displayed using the View RGB Histograms selection. Remake Composite RGB Image This command will generate a new 3D RGB CLUT and Indexed Composite image based on the settings selected in the settings window. Open New RGB Color Segment RGB segmentation breaks up the image into RGB color segments that contain the pixel colors characteristic of a given object class. This command is utilized to start the compilation of a new color segment and to switch between multiple color segments on a random access basis. Add To RGB Color Segment The color segments are defined by the selection of regions of pixels with one of the "marching ants" selection tools. When the Add to RGB Color Segment function is selected, the pixel colors in the currently selected region are added to the Color Segment histogram. Subtract from Segment When the Subtract from Segment function is selected, the pixel colors in the currently selected region are eliminated from the currently selected Color Segment histogram. Subtract from Other Segments When the Subtract from Other Segments function is selected, the pixel colors in the currently selected region are eliminated from all the RGB histograms of all Color Segments. RGB Color Segmentation This function generates a new window where the pixels in different RGB Color Segments are segmented and displayed in their average color. In this display, ambiguous pixels, i.e. pixels that are members of more than one class are displayed in bright red, although we will probably animate these pixels in a future version. Reset Window Assignments This function resets the RGB Color Segment histograms, allowing further segmentation., additional images, etc. It must be called every time the Red, Green, and Blue images making up a color set is changed. Failure to do this will lead to very unpredictable results.  RGB Composite Options This selecting brings up a dialog box that allows one to tailor the algorithms used to create the Look Up Tables. The selections affect general color separation parameters the resolution of the 3D look up tables (0...255, 0...Max, Min...Max) and the linkage of the resolution between Red, Green and Blue axes. In addition the methods and parameters utilized in the generation of the 8-bit composite image such as the color segmentation algorithm (Middle Cut, Median Cut, Mean Cut), the number of colors in the Look Up table and the ordering of colors in the Look up table (Value: Vhs, Hue: Hiv, RGB and Pixel Frequency). RGB LUT Histograms ColorImage supports two forms of 3D RGB hitograms of the image data and region classes segmented from the data. They will not operate on 8 bit indexed color images and require color data in the form of three files that represent the Red, Green and Blue planes of the RGB source. As for generation of Indexed Composite files, they must be opened in that order and appear in that order in the Windows menu. The resultant histograms are a plot of red values (x axis) vs green values (y axis) broken up into 32 slices of ascending blue values progressing along rows from the lower left corner to the upper right corner. The colors are segmented on the lower 5 bits of the color data so there are 32 levels represented in each of the three planes. View 3-D Color LUT This procedure generates an RGB histogram of the RGB boxes that were utilized to generate the 8 bit CLUT. Each box indicates the the distibution of pixel values is represented in their actual color. A submenu selection will allow the user to view RGB color segments in their average color in RGB space. View 3-D RGB Histograms This function generates a RGB histogram of the image pixels. It is useful for determining whether RGB Threshold segmentation will work for a particular image and establishing the 3D RGB morphology of color classes. Acquisition and Display Procedures Create RGB Files This function will generate three RGB files of the Red, Green and Blue planes of an area selected from the Camera window. To use it first StartDigitizing and select an area with the marching ants rectangle or the user can select the entire image if enough memory is available. The system will then switch sequentially to the red, green and blue planes to create three windows titled Camera/RED, Camera/Green and Camera/Blue Create Averaged RGB Files This is the same as create RGB files except that the program performs frame averaging on each plane. The number of frames to average is set in the Options dialog box. Get RGB Files This command closes the Camera window and reads in sequentially the files named Camera/Red, Camera/Green and Camera/Blue. It assumes that the three files are in the default directory. Binarize RGB Color Segments This module generates a binary image of each RGB color segment for binary manipulations, blob quantification, etc.  RGB Sources ColorImage was developed using both the Sony ProMavica (MVR-5500) electronic still video recorder/player as well as the Sony XC-711 CCD RGB Color Camera as RGB sources. The XC-711 has a broad range of wavelengths (~475-625 nm) over which at least two sources respond to the same pixel giving it excellent color resoultion capabiliities. The ProMavica has the advantage that it allows one to use NTSC video as a source and has external synch capabilities. Both of these sources work well with both the Data Translation and Scion frame grabber boards. MAC IIfx Users Put the IIfx Serial Switch into your system folder and put the IIfx into compatibility mode so it thinks it has SCC chips which is what the Sony commands hammer on. NIH Image Consult the NIH Image V1.31 Manual for a description of the basic functionality of the version of Image in this version of ColorImage. Image was developed by Wayne Rasband, National Institutes of Health, Bldg. 36, Room 2A-03, Bethesda, MD 20892. (wsr@nihcu.bitnet) and and the current version of NIH Image, ColorImage and other versions of Image are available by anonymous FTP at the NIMH Bulletin board (alw.nih.gov 128.231.128.251 in the subdirectory /Pub/Image) as well as on the MacSciTech Bulletin board (RA.NRL.NAVY.MIL in the subdirectory /MacSciTech). References Ayers, J. (1989) Recovery of oscillator function following spinal regeneration in the sea lamprey. In: Cellular and Neuronal Oscillators. J. Jacklet, [ed]. Marcel Dekker, New York, Pp. 349-383. Maney, E.J., Ayers, J., Sebens, K.P, and Witman, J. (1990) Quantitative Techniques for Underwater Video Photography. In: Diving For Science. Am. Acad. Underwater Sci., St. Petersburgh Ayers, J and Fletcher, G. (1990) Color Segmentation and Motion Analysis of Biological Image Data on the Macintosh II. Advanced Imaging 5: 39-42 About ColorImage 1.32   l-L)w)i)Y  1˜: 0  7 "%UR UI%I$J# LJUJURUV %RUJR#RUVUR)I%N#RJUkjT&#*)UURUUV UVU RUj#HJwzUUVUR)&Rwmݭmk[j**wj?/ IUWwkV2I* jU$2+UWRR 2RTTJ?2*R J* 4IJUU^{UURUJ 3 %*U{T? 1TUU_ mUII** 2*vߵU*UT 2JUmUUT?1RWV%JRR0)RUj{ZTIJ.DUmUR*? - *JJo*V+R۽ZڪJ,VkjRRR,T*uݪU*'IUm{ZUUIR'Ju[~RRUJR#)*VWkjUUJUJ#TI[mvmUUJ#"UگVmT)*J#UJUV[j*(UTk.ZmURR(I%UW][RV (*zꪪR'', H*_koUJ(.RUv*J 2U*UJ}mV_!82$JֵUJ?b0%4RRU}TV/d0?5 UJwz%*/{^6)*}{ZjT?0`>_8J*u@?7UZJ^7U*Z][}[1$UUnꦪ֪V33JUuj?;3 %UUmoUJ.%RJVVUZUUI*-T)UoZkT("RUkڷjU+ZV#JUVڵUR')JVޭ[UUJ-$)%jkjRV- TU*V/UVwjTUJ 0*UU*uu֪UJ0JJZTV)/)U]mmVURuI|0$U*}wRJ{}1IJ]UJ= U4UwUJU* ? 3 $UUT W3R*UV2UJm^UR/ I*VvR( $[UUj#UUVVmZJ# *JUjVUV" )UWmUUUV#UUjUVU*& $mV'VުֵZU&& RUjjj+ %JUVUV<, UU[vj2 U)*o}խ7Hmo}vuUV8%UU_]wׯ]m :U*\9$U__wUUV YU_:vm^߷V5Z U9U%ޭ?5[U:%IUVjnV?5Z-W8ToUUT?@5Z-W5JUVUUZ@?5Z-_3%)UVnj?uY|3 RumUn?4Rm@?3JRUk[jm_1)JUV֪Vn^1U*^ڦߺUUZն|-$IUڭjUURVp, R*UUj- IU+mJUUR* UIU^몪mUV( $w}VUR(*U׺UUUR},UwUUTU$ - )V޿zUUR . JUwUR /TJ*jjI&/TwooUURUU*x. JJUJR. )U*zmZU*+ IRUW׵UUJ" *zVU)V# IRJkVUR" %JUZZUJV# T*UUmkjV#I*j׶ڭmUUR" %RUU]zj(J[WjUV. URK>Z~mJ}0JJջoUIR2TR_ջowjUVH4*UU*H4J/UV$1Q?4JU_UUR?`Q5RmݷnI$`o3*IUUjVoQ1DR[TI*?Q3*UUSmT3IUT~UJ2& ۿU*R.%U VڪJJ>/ImUVjUT1/* n%J?- RUUWU*IV- I*VkjwUU&( TWڶJUV."UZwjUUR?+JE*WmRj@@+*muUU]N`3%uڪڪp5JU?} 8QJkm]Vֶں￶??Q_ 8*$*Zo O_ 7JvmU 6IIUU[UUZ[}ڦ|3T${UV?@3%*VURVR@?' ${ۻUZJ(LjJR(UJW{U{UTRUT2-E$[RJUV-(UU[mU*JRJ-UD)VU/ԪJJV?- *RUIUT?-TJZj~$-JE)JjRUURR-"WV}JUUJ" Um}ZkUR)"'IJmjUTJTJ'U*UUIRTR- JZkjJ*-TUUkꪩ%UR@-#%WWUVݫ]uUUT @+ [wRR@@4UmnZIUJ@ @5%U_ZZUJ @4UU}]UR& `5W_mUUV$ 9@@5]]^)RIIUJ? ?@@5 JokU)$I&@? @@@1RZժU%$ B9@/*vU$ FE@/۪RJ B@/{mUUJUU%I&? B @-Vվ)RH @.ݵUkjU)%J$ B!@.Wު޵UJTRJ B}+]{kUu֪RjJQ)V+WִVR!E&?+}_֪UJRH*WJ]IT$(n߻ꪪUU$)RF>&l]کU!D*#nU_j$2'[URu[TRBTJ,UZ))U ?-6%UWUTTH*@/[UTomREHTB}/UI*UQBJFA/U$UT{U%"**Byx0TWUݩRDJ*?B83*U ~RRD 83D[jJI*R BEx3*UVWo)$ $F r B93 J{UJR  5*V~jT) ?4USwߵI"R 3ooUTUUUF?? 3JvRR* /{Ҫ*RURIR? r-IV}}Uj)%&-I%[][[TTET.WJ%RTJ0$WzZJ)*IV@0LZkTU&/0RUoT%JdJ0(1_UU)HJ/1JJ_TU*VI1QTjT*21*J׵UURTJ*?z1$IJRJ>0RU{oWjkUJD$J?0UWmںUU+R-RRjUUVUH*'JUZ%EH#$JUUTUT*UJ!R)T E%Q"V#U%U RTP""UTRJR# II"RURU$#%$RJ*U&#UUJRjUDJ#I)T U)*I)J  + n + Dithered Image 4 )Segmented Bitmap * G)Region Objectsu   ' @'''?  3 ?3 8rCppɇ3' 31393 s3393? 33933? 33933?? 33933;? sxs<χ3?     ?        0f` @ f1UUTUU@UUT @ f1` @+ f1`@> 4@> f1` `!) f1` @; f1` @+~ @ d1` @; @ x1` C+ 09 C; 1 C+?c ! C;! 1 C+?c 9 C;  C+  @; 0f @+~ @ f1 @; O f1 !- f1ꪾ UA>ꪾ f10 / f1` f1 O d1  @ x1 0        0f @ f10UUTUUTUU@UUT @ f1`+ f1@>@>4@> f1) f1; f1+ @ d1; @ x1q+? 0q;> q+? q;> q+ q; q+? ;>?+;-ꪾꪾ>ꪾ/     0   x|x ͳǍ<  31 31  31 31    31L x|x 30nj@` 0pgorarQ@ @0@@@? ? ??  9!88dÙÓ  9 癙 癙 ٙ癙 9<9gÙß @@@@ @? @ @ @ @(@ L@ 0)@  @ @ 0.@ ̀ @ Ϗ6 1-@ @ ?0f1-@ @ 00f1p-@ @ L10 f10-@ @0> @ @ @ @ @ @ @ @ @ @@!A@!A@!A@!A@!A@!A"@!xxAx"@! A "@! A "@! A "@! A "@! A "@! A "@! A "@!xxAx@!A@!A@!A@!A@!A@!A@!A@!A@!A@!A@!A@ A@ A@ A@ A @?@@@@ @ @ @ @@@@@@@!@+@ ǀ 1"@ @ 1"@*UUx*  Ǎ1"@W8W  1"@h8|h 1"@S8?S  1"@w8w  1"@W8V @ 1"@w8yuǀ  '@W8xU '@w=8xu%@W?8xUw%@w=8xu5%@W?8xUw%@w=8xu%@W8xU%@w8yu%@W8V%@w8w)@[8[1@}UW8U|}UW   1@_8_ 3 1@?x? 3<><0@  3 f`"@ ώ3 f`#@  33 ff~f`#@  33 Fff`f`#@ 33ffbf`#@<>&1/@w?w=|wc-$@WW?|W   -$@ww=|w  +"@WW?|W # +"@w=w|w  '@WWW '@www%@[[[%@}UW}UWU|}UW @___ @??? @@ @ @ @@@@@@ C B B B B B BBp x` B ` B 񳏀xgB LcB q c B 9 c B  c B Lc B pxx3 B B B B B B B B B B B BB?B @B @"B L@(B  @ @+B ̀ @ Ϗ6)B @ 38)B  @ 30)B @ ?00B @ 00010B @ L1030B @033ǍB @3 331B @3 331B @3 331B @3 331 B @3 331L#B!A310njB!AB!AB!AB!AB!A#B!xxA!B! A !B! A !B! A !B! A %B! A %B! A $B! A $B!xxAB!A#B!A?`#B!A  #B!A  g<#B!A  f#B!A f#B!A  ff~#B!A  ff`#B!A  ffb#B!A  ff<B!AB AB AB AB AB? B B B C@@@@@@@` 0 pt<I @<P<I<I  @ @ @ @ @ @ @ @ @ @ @ @`30 @ 30@'3>31xp@O321@O31@O31p@O318@'31̘@ 31xp @` @ @ @ @ @ @ @ @ @ @@`0@ 30 @ 3>1@@3 @@?3@@3@@3@ 3` @ 331@`@# @ @ @ @ @ @ @ @ @@`>0@ 3 @ 31Ǐ @@33#32 @@3338 @@31? @@300 @ 32c1& @ >1 @` @ @ @@?@@@@ @ @0 @f`  @`>cf @ 3g  @ 3gg  @@332cg  @@>38cf  @@03cf`  @@03cp0  @ 03&c0  @ 0a @` @@@@? @ @ @ @ @ @ @ @`@ 3 @ 36xxp   @@38̌ @@?0| @@30p @@308x @ 30̘ @ 30x|pxp@`ə@|@@@ɉ@x|p@@@@@``  @ 2` @ 0|<|<8 @@8fFffd @@f>ffp@@f~8@@f`@ &fbL @ f>|<8@``@` @ @ @ @ @ @ @ @ @ @ @ @ @ @    4 p v g @.HL,:_\g!<8 1V  d 0%d`xxx yl"ffgp̌11n%f8|1z%gg11 %0ff 1 1V#f&f&L1 1-%c8x|x@m `.ndtHp-LHL @0f`<l!L3`` B% 331f|f<>< -(3 fflFffff L#A-' 31ffpff~  Aᙘ<' 330ffxff`  3A( `332`fflffb  3AၘT(\331f>><L3z  x^,F 0< <nGh|,LmR@lg.:-q L0<~<b- 3f 8  0@&@ 2331fǍ`f @ ````m43 f<L2`fÏ O p|p`'5 ?33f 8`gA瑙 yfyf`5d31f ```A} _ff_c`X4 330f ```A9 NffNfc,5332`ffFĽL&```A DffDff`5,331|ϟ>|ϟ>|ϟ>|ϟ>|ϟ>|ϟ>|<m$H D`mP A<uLd-V.`_@ @ `t d xq<83gp, Ɍffdc3ɘ ff`c3 Z  q~f`c3q- 9`f`c3 9p- Lbfdc3 @0Z xq<81patL-,-.R\ L , ,nnnnA% >1xZ3, @ 30003 ` 0V3# x33y03  000J4@ 3'21y1x|Ǐ 8qfx|4L >3 013<@<2302f0|3 3?33013 @/100f0P5, 303301s3? @'3300f0_5P L313321#30 @"3300f0_5x3y31  3302f0 ',!1 x|  10>`"`xhHL @vd@,:ydnRP^LT :"<  1?n @  #0-# xf8x|p3ǀ0 # fd 1>8x|p0ǀ?rh   @ sRdz$ ``xx * L3`3`>* Ϗg`3 30 0/) gff``y3 3f1 0l/) fff`33 @32f330@0q1) fff`33@?8f30@ L #  | >H" |>ph  ||p"< |0x,%@ | | @P # < xD$ |@h# |@<"@ | @,# |@"@ l H# |  H!|X! | 8" | X  < $ L ߀;X" #>8 $$?&s xB$, 'l"h@&l 8,+ @| << (  x 8 ) l0| 'pl 8x'  <| p`|l) |`", , |$`!| *  `~\ h`!) !\"?x" $ |><) !| >|$$* >| >\"$) 8!8|>|!) "@ <><p *  ~ 6xl$ ( ! |d L@* ` ~< h  @ (  |d `- g=~~? +5>@|@G@8&?lhB (>|@@) ~<@ $'<L(p| @(8<1O  *8< O$ ,@9<l#  )1|#! OD* |3a G*|#a G `*" |#a G> , <#a )l"@ >h(|&a C> %@<" >x(|&B A68( l& v0 8@)@| d 8@(x D <H)\ AD H )oor7B3";p< p@ &2p, p(>xl @X@4&||d? @8@ $&la (#`( f0x`'!l"@ ( `|| xap *|l p$ ( l| Xph(@l@  @px(l@ 8 (x@ x@'  x@ H$( @@ +xD HH @@ "߿?#f;H#>x&|` h+# ~ @y@@`' `   ' @| { @ $@wa & @a v@@$ @~`~&@~  (   B@  & . $& @/x@(" axX&@ `d F%  X@p<% x p% xpd& @x x!8(#X 8, $   g | ~  -)?ϟR'"X|` <0>"xx% h |#3` %@ ? x' @@" 7x$ @@7x  8%  /<%  ' |  ,& @0 Fbx |%ab`x ,%af`|$&@@xx A$ &  x x @"%  |`| ` $ `x $$ @`| p& xpX "%px x$% "0h< &380@3 8$#2x02p 8 * fx| >pB<: ~?Ϗ"?vτ& n( w(v0&`:Hd 8 &@bDl <' !@ l ( !l@@'#a  hx> ' ca6H &FH B &B  @@(,@| &  xB&Lhp &hx&  h# &>><#a&?:L$v>:h &f66p(&(f &6pHG>*D ! n60h$@ h&0p.%@l&8XFp 7% ) &H!& (`!$P= @b( b<@6 `'B<@f `( t~ Hp( <|l @8( >|l  <' a:x@)  a>N# whC7 .* !/~60f! & 40` & h $  `p'  |"6  8$B<@`$  @&p8' l0  * @@~8@@'< @h'@< Hp) h@ h<', @(`,0# a>p"  >d0 8~$>pd0 " <1`$>L ~' > A@) >0  p' 26'x<8& 2a|<)d>|  < 8Ç""DH" "DH""DH"""DDH"?"DH$H""DH$H""DH$H""DDH8 w   "`&@ " "@ #0@ $Q$L# L@ Q$H" H@ "'ȑ" H@ B"$" H@ Ba$H* H@ Asp@ !@ !@  @m `.ndtHp-LHL @0f`<l!L3`` B% 331f|f<>< -(3 fflFffff L#A-' 31ffpff~  Aᙘ<' 330ffxff`  3A( `332`fflffb  3AၘT(\331f>><L3z  x//1144``llst ttt @@ @ެ @̤ @ì @< @ @t05MXixrt  hi/0Lܸܯܦܝܑ܈v!0!0 !0 !0  !0 !0!0!0!0!0 !0!0!0!!|.LM[56S ##$&&&(5(6(I((((++///111444447.7/7071::::;x;y>>???@E@F@]@^@zCCC5CCDIIIILLMOqOrOPmPnPPPPQQQRRRSSTTVVVVVXYYZZZZ[[[[\\]]]]!0!0 !0 !0!0!0 !0!0!0!0A]^~^^___```aaccce.fffggghhhhhjjjkZk[kil!l"l>llllllnnnoooqqqrscss!0 !0 !0!0!$0!0!0 !0!0!0!0!0!06st t tttt!0! st'6/43:xB5LS\`ils  ) D e +^ L=]st HH(FG(HH(d'@=/R@H -:LaserWriter ([(