`8Loaderބph  A SAGROTAN 4.14 `0: @`8fA0<BAXQJAf Aa`NuAaV`x**************** Bootprogram for protection against virus. ****************/?< NA\Nu **************** By: Henrik Alt, Kirgelweg 25, 7160 Gaildorf. Kto. 6428662 KSK Schwb. Hall BLZ 62250030 **************** p The bootsector has been changedq p No bootsector virus! q ****************Don't forget to update! ****************Nq`X@#C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY]_a!cAeagikmoq!sAuawy{}!Ao!Aa!Aa!Aa!Aaǁɡ#C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY]_a!cAeagikmoq!sAuawy{}!Ao!Aa!Aa!Aa!AaǁɡART__051325DESKTOP INF. .. AIM_SUPP_2 . .. HELP ACROS AIMPACROS IM AIM INFAIM2_31 PRG)AIMBW RSC[RAIMCOLORRSCpRDEMS AIM:DEMSHA AIMSCHEMA IM . .. READF HLPCREADF HLPCOPY HLPEXIT HLPHELP HLP MINIMUM HLP MAXIMUM HLP MINDEV HLP HARA HLP HAVE HLPBCOPY HLPAND HLPDILATIONHLPEROSION HLP-SKELET HLPADD HLPBDISP HLPCADD HLPCDIV HLPCMUL HLPCONTOUR HLPDIV HLPENDPIX HLP EQUAL HLP EXOR HLPGDISP HLPGRADX HLPGRADY HLP HIST HLP!LAPLACE HLP"readf: reads a grey-value image from disk Extension: .IM -> aim; .PI1/.PI3 -> DEGAS; .NEO -> Neochrome . Default .IM. command : readf image-file, image default : readf trui , A range : - , creadf: reads a colour image from disk Extension: .COL -> aim ; .PI1 -> DEGAS ; .NEO -> Neochrome . Default .COL. command : readf image-file, image default : readf trui , A range : - , copy : copies an image. The input image is copied to the output image. command : copy input image, output image default : copy A , B range : , exit : ends the program. This action can also be obtained by typing Control-C, or clicking the close box of the command window. command : exit help : gives help information. command : help commando A question mark (?) gives a list of the available commands. A return gives the next screen window. (*) minimum : minimum of output and input image. output-im = minimum (input-im, output-im) command : minimum input-im , output-im default : minimum A , B range : , (*) maximum : maximum of output and input image. output-im = maximum (input-im, output-im) command : maximum input-im , output-im default : maximum A , B range : , (*) mindev : take closest input value . if | out_im - in1_im | < |out_im - in2_im| out_im = in1_im; else out_im = in2_im; command : mindev in1_im , in2_im , out_im default : mindev A , B , C range : , , (*)hara : non-linear edge filter. Hara performs a variant of the 3x3 Lee- Haralick edge filter . command : hara input-im, output-im default : hara A , B range : , (*)have : non-linear laplace like filter. Have performs a non-linear laplace like- operation inspired by Lee- Haralick. command : have input-im , output-im default : have A , B range : , bcopy : copies a bitplane. cmd : bcopy bit_in, bit_out, im_in, im_out dflt: bcopy 1 , 3 , B , B range: <1,8>, <1,8> , , and : AND-function of two bitplanes. bitpl out = (bitpl 1 in) AND (bitpl 2 in). cmd : and bit1 in, bit2 in,bit out,image dflt: and 1 , 2 , 2, B range: <1,8> , <1,8> , <1,8>, dilation: extends white objects. One layer is added to an object in 1 iter(ation). Holes < #iter x 2 are filled. cmd : dilation # iter,bitpl,connec,edge,im dflt: dilation 1 , 1 , 6 , 0 , B range: <1,512>,<1,8><4,6,8><0,1> erosion : erodes white objects. One layer of an object is peeled off in 1 iter(ation) Objects < #iter x 2 disappear completely. cmd : erosion #iter,bitpl,connec, edge, im dflt: erosion 1 , 1 , 6 , 0 , B range: <1,512>,<1,8>,<4,6,8><0,1> -skelet : skeleton without endpixels At each iter(ation) 1 layer of an object is peeled off with topology preservation. command : -skelet # iter , bitpl, edge, im default : -skelet 100 , 1 , 0 , B range : <1,512>,<1,8> ,<0,1> add : adds two images out-image = (in-image + out-image)/2. command : add in-image, out-image default : add A , B range : , bdisp : displays a bitplane of an image. In low-resolution the type of display is determined by the don parameter. command : bdisp image,bitplane default : bdisp A , 1 range : , <1,8> cadd : adds a constant to an image. command : cadd image , constant default : cadd A , 0 range : ,<-255,255> cdiv : divides an image by a constant. command : cdiv image , constant default : cdiv A , 1 range : ,<-255,255> cmul : multiplies an image by a constant. command : cmul image , constant default : cmul A , 1 range : ,<-255,255> contour : finds object contours. Finds all white pixels with one or more black neighbours. command : contour bitplane, edge, im default : contour 1 , 0 , B range : <1,8> ,<0,1> div : divides two images. out-image = out-image / in-image. command : div in-image, out-image default : div A , B range : , endpix[els] : finds endpixels. These white pixels have a single white neighbour in a 3x3 neighbourhood. command : endpix bitplane, edge, im default : endpix 1 , 0 , B range : <1,8> ,<0,1>, equal : histogram equalization. Reassigns the grey-values for an optimal use of the grey-value range. command : equal input image, output image default : equal A , B range : , exor: EXOR-function of two bitplanes. bitpl out = (bitpl 1 in) EXOR (bitpl 2 in). cmd : exor bit1 in,bit2 in,bit out, im dflt: exor 1 , 2 , 2 , B range: <1,8> , <1,8> , <1,8> , gdisp : displays a grey/color image. High resolution : black and white dots. Low resolution : 8 greys/16 colors. command : gdisp image default : gdisp A range : gradx : horizontal gradient filter. Computes the horizontal first derivative. out-img = gradx(in-img) * (mul/1024) + add. cmnd: gradx in-img,out-img, mul , add dflt: gradx A , B , 1024 , 128 range: , ,<10000>,<+/-255> grady : vertical gradient filter. Computes the vertical first derivative. out-img = grady(in-img) * (mul/1024) + add. cmnd: grady in-img,out-img, mul , add dflt: grady A , B , 1024 , 128 range: , ,<10000>,<+/-255> hist : displays the histogram of an image. The histogram of the grey-values present in the image is computed and displayed. command : hist image default : hist A range : laplace : linear filter to enhance an image. Filter coefficients cc = 5, chv = -1 , cd = 0 (See filter). command : laplace input-image, output-image default : laplace A , B range : , LIFE HLP$LINKPIX HLP#%LMAX HLP'&MAJORITYHLP*'MUL HLP.(OR HLP1)REMOVE HLP5*RESET HLP8+SET HLP<,SINPIX HLPB-SKELET HLPE.SUB HLPI/THRESH HLPM0VERTICESHLPP1WRITF HLPT2MEDI HLPW3SETUP HLP[4TOFF HLPa5-TON HLPe6oUNIF HLPi7DOFF HLPm8rDON HLPp9FILTER HLPt:INVERT HLPx;LABEL HLP|<LMIN HLP=LOGGING HLP>CMDFILE HLP?CMDWIND HLP@PROPAG HLPAREAD_ME DOCBіREAD_ME hulife : game of life The well-known game of life is a Cellular Logic Operation. command : life # iter, bitpl, edge, im default : life 1 , 1 , 0 , B range : <1,512>, <1,8>,<0,1>, linkpix[els]: finds link pixels. These white pixels have 2 white neighbours in a 3x3 neighbourhood. command : linkpix bitplane, edge, im default : linkpix 1 , 0 , B range : <1,8> ,<0,1> lmax : computes a maximum image for a local neighbourhood. The (neighbourhood) size is an odd value between 1 and 63. command : lmax in-image, out-image, size default : lmax A , B , 3 range : , , <1,63> majority: assigns the majority value. A pixel gets the majority value of its 3x3 neighbourhood. command : majority bitplane, edge, im default : majority 1 , 0 , B range : <1,8> ,<0,1> mul : multiplies two images and divides the result by 256. out-image = (in-image * out-image) / 256. command : mul in-image, out-image default : mul A , B range : , or : OR-function of two bitplanes. bitpl out = (bitpl 1 in) OR (bitpl 2 in). cmd : or bit1 in, bit2 in, bit out, im dflt: or 1 , 2 , 2 , B range: <1,8> , <1,8> , <1,8> , remove[noise]:removes pepper and salt noise A white pixel in a completely black neigh- bourhood becomes black and opposite. command : remove bitplane, edge, im default : remove 1 , 0 , B range : <1,8> ,<0,1>, reset : resets a bitplane. The value of the bitplane becomes '0'. The pixels become black. command : reset bitplane, image default : reset 1 , B range : <1,8> , set : sets a bitplane. The value of the bitplane becomes '1'. The pixels become white. command : set bitplane, image default : set 1 , B range : <1,8> , sinpix[els]: finds isolated white pixels These white pixels have not a single white neighbour in a 3x3 neighbourhood. command : sinpix bitplane, edge, im default : sinpix 1 , 0 , B range : <1,8> ,<0,1>, skelet : skeleton with endpixels. At each iter(ation) 1 layer of an object is peeled off with topology preservation. command : skelet # iter, bitpl, edge, im default : skelet 100 , 1 , 0 range : <1,512>,<1,8>,<0,1> sub : subtracts two images and adds a constant if neccessary. out-image = (out-image - in-image) + const command : sub in-image, out-image, const default : sub A , B , 0 range : , ,<-/+255> thresh : makes a grey-value image binary by thresholding, Pixels with grey-value > threshold become white, the others black. cmd : thresh in_img,out-img,bitpl,threshold dflt: thresh A , B , 1 ,automatic range: , ,<1,8>, <0,255> vertices: finds vertices. These white pixels have 3 or more white neighbours in a 3x3 neighbourhood. command : vertices bitplane, edge, im default : vertices 1 , 0 , B range : <1,8> ,<0,1> writf : writes an image to disk. grey image: .IM, color image: .COL. command : writf image, image-file default : writf A , dummy range : , - medi : The median filter determines for each pixel the median (the midddle) value of a local (3x3) neighbourhood. command : medi input-image ,output-image default : medi A , B range : , LOAD SETUP: loads a setup file. The setup file describes the path of image files, commandfiles, helpfiles and the position of the windows. SAVE SETUP: saves the current settings in a setup file. (*)toff : Sets timer off. command : toff (*)ton : Timer on. The execution time of each command is displayed when the timer is on. command : ton (*)unif : uniform filter. This filter determines the average of a local neighbourhood in the input-image. command : unif input-im, output-im, size default : unif A , B , 3 range : , , <1,63> (*)doff : Automatic display off. An image is only displayed after a gdisp or bdisp command. command : doff (*)don : Automatic display on. After each operation the result is shown. Parameter : 0 : display off (same as doff) 1 : Average bitplane (2x2 neighbourhood). 2 : Sample bitplane 3/4: Multiple low/high bitplane display. filter : 3x3 rotation symmetric filter. central:cc, diagonal:cd, hori/verti:chv. out = filter(in) * (mul/1024) + add cmd : filter in, out, cd, chv, cc, mul, add dflt: filter A, B , 0 , -1 , 4 ,2048, 0 range: ,<-/+1000>,<10000><-+255> invert : inverts a bitplane. A white pixel (value '1') becomes black (value '0') and opposite. command : invert bitplane, im default : invert 1 , B range : <1,8> , label : labels connected components within a binary image. Maximum number of labels is 255. command : in-image,out-image,bit-in,conn default : B , A , 1 , 8 range : , ,<1-8><4,6,8> lmin : computes a minimum image for a local neighbourhood. The (neighbourhood) size is an odd value between 1 and 63. command : lmin in-image, out-image, size default : lmin A , B , 3 range : , , <1,63> LOGGING. It is set on by selecting 'LOGGING' in the menu. A checkmark is displayed when logging is on. Selecting logging again closes the logfile. In this way automatically command files can be created. A commandfile consists of a sequence of AIM commands. A commandfile may be called within another commandfile. @filename starts the commandfile filename.AIM Parameter -1: infinite repetition. Examples are @demo1 to @demo7. COMMAND WINDOW. The command can be edited by BS or DEL which deletes the last character, and CONTROL-X which deletes the whole line. propag: extends objects within a mask. A pixel of an extension layer is added if the mask pixel is white. cmd : propag # iter,bit,maskb,conn,edge,im dflt: propag 1 , 1 , 2 , 6 , 0 , B range: <1,512><1,8><1,8><4,6,8><0,2> 06601030305800 1AIM manual 2Page # F0110030 9[..........................................................]001   AIM : ATARI IMAGE MANAGER TheimageprocessingprogramAIM2.3fortheATARISThasbeendeveloped byFransGroenandRobertdeVriesoftheDelftUniversityofTechnology. Fransisascientificstaffmemberofofthesection"PatternRecogni tion"ofthevakgroepSignal/SystemTechniques(ST),Robertisa studentofanothersectionofthesamevakgroep. AIMrunsinhigh-resolutionandlow-resolutionmode.Themedium-resolu tionmodeisnotsupported. AIMhasbeenwrittenintheC-languageusingtheLatticeC-compiler.The purposeoftheprogramistoexperimentwithdigitalimageprocessing. User interface  TheuserinterfaceofAIMconsistsof: -GEMinterface.Operationsandparameterscanbeselectedbymeansof dialogboxesanddrop-downmenus.Achoicefromamenuresultsina commandwhichispassedtothecommandinterpreter.Imagedisplayscanbe movedandsized. -Commandinterpreter.Sequencesofcommandscanbeputtogetherina commandfile.Whentheloggingison,commandswhichareenteredarealso storedinalogcommandfile.Acommandfilemaybecalledwithinanother commandfileupto16levelsdeep. Images in AIM  FourimagememoriesareavailableinAIM2.3.Theimagememoriesare8 bitwideandhaveamaximumsizeof65536pixels.Standardaimimages haveathesizeof256x256pixels.Theseimagememoriesaredisplayed attheATARIscreen.Thewindowsaredesignatedwith'A','B','C'and 'D'.Thepositionofthewindowsisobtainedfromasetupfile.Image windowscanbemovedandsized. Acolourimageconsistsof4memorieswithamaximumof16384pixels respectivelyfortheintensity,red,greenandbluesub-images.This maximumsizeistheresultfromthecurrent1Mbytememoryrestrictionof theAtariST.Whenthememoryincreases,largercolourimagescouldbe supported.Standardaimcolourimageshaveasizeof4times128x128 pixels.Theyoccupythesameareaasangrey-valueimageofsize256x 256.Mostofthe(colour)imageoperationsareappliedtoallsub-images ofacolourimage.Someimageoperations(gradx,grady,equal)are performedontheintensitysub-imageofacolourimage.Aftersuchan operationthered,greenandbluecolourvaluesareupdatedaccordingto thenewintensityvalue. The8bitplanesofthegrey-valueimagescanalsobeusedas8binary images.BinaryandCellularLogicoperationscanbeperformedonthese bitplanes.Thebitplanesarenumberedfrom1to8. Whenanimageisreadfromdiskall8bitplanesarereadsimultaneously. Thesameholdswhenanimageiswrittentodisk. Animageisdisplayedinthegrey-valuemodewhentheextensionis.IM andincolormodewhentheextensionis.COL.Thedisplayofcolorimages isonlysupportedinthelow-resolutionmode. AlsoDEGASandNeochromeimagescanbereadorwritten.Withtheread commandthesepicturesareconvertedto320x200grey-valueimages.With thecreadcommandtheyareconvertedtocolourimagesofsize160x100. Whentheextensionis.PI1or.PI3aDEGASfileisreadorwritten,when theextensionis.NEOaneochromefileisreadorwritten.Examplesare givenin@democ4. Greatcareshouldbetakenbystoringimagesindegasorneochrome format.Intheseformatsalimitednumberofgreyvaluesorcoloursis used(palette),soadrasticreductionofinformationtakesplace,which limitsthepossibilityoffurtherimageprocessing.Imagesarestoredin fullgreyorcolourresolutionintheAIMformat. Inthehighresolutionmodeastandardgrey-valueimageisrepresentedby 256x256blackandwhitedots.(thereareonly2greyvaluespossible: whiteandblack).Asigma-deltatechniqueisusedtoobtainalocal densityofthedotsrepresentingasgoodaspossiblethegrey-valuesin theimage. Inabinarydisplay0givesablackdotand1awhitedot. Inthelowresolutionmodeastandardgrey-valueimageisrepresentedby 128x128pixelsin8grey-values.Againasigma-deltatechniqueisused torepresentasgoodaspossibletheoriginal256greyvalues.Asthe standardimageshaveasizeof256x256pixels,inthelow-resolution modeonly1pixeloutofeach2x2pixelneighbourhoodisdisplayed.In thedefaultbinarylow-resolutionmode(don1)ablackdotisdisplayed whenallpixelsofa2x2neighbourhoodare'0'andawhitedotis displayedwhenallpixelsina2x2neighbourhoodare'1'.Inallother casesagreydotisdisplayed. Astandardcolorimageisdisplayedin128x128pixelswith16different colors.Anoptimumpaletteischosenforthecurrentlydisplayedimage. Sothepalettesofotherimagesarenolongercorrect.Thepaletteofthe imagewhichisontopisdisplayed.Clickingonanotherwindowbringsit ontopwiththecorrectpalette. Standardgrey-valueimagesondisk(extension.IM)consistof256lines of256pixels(unsignedcharacters)of1byte.Soanimageconsistsof 65536bytesintotal.Thesequenceislinebylinefromtopleftto bottomright. Standardcolorimagesondisk(extension.COL)consistofasequenceof4 sub-imagesof128linesof128pixels(unsignedcharacters)of1byte. Thesub-imagesareintensity,red,greenandbluerespectively.  Whenanimagedoesnothaveastandardformataheaderisneeded (extension.HD),describingtheimagewidthandheight.Theheaderused istheheaderoftheCentreforImageProcessingDelftandisgivenin theAppendix.WhenanimageiswrittenintheAIMformatalwaysaheader iswritten.  Command interpreter  Itisnotnecessarytogivethecompletecommandname.Thesmallest numberofletterswhichgivesnoambiguityissufficient. Itispossibletoedityourcommandsinasimpleway.Thedelete-or backspace-keydeletethelastcharacter.CONTROL-Xdeletesthewhole line. Asequenceofcommandswhichperformacertainoperationmaybegrouped toacommandfileandstoredondisk.Theextensionofcommandfilesis .AIM.Whentheloggingisonalltheenteredcommandsarestored.When theloggingisswitchedoffalogcommandfileiswrittentodisc. Commandfilesareexecutedbytyping@name(withouttheextension).Anew commandfilecanbecalledfromacommandfileandmaybenestedupto16 levelsdeep.Sotyping@command-file-nameinsteadofacommandexecutes thecommand-file.ESCstopstheexecutionofacommandfileandasksthe usertogoonornot.Defaultvaluesareusedwhenaparameterisnot given.Whenanerroneousvalueofaparameterisgiven,thecommand interpreterasksforacorrectvalue.Ifinthiscaseareturnisgiven, thedefaultvalueisused.Thisgivesthepossibilitytoaskfora parametervaluewhenacommand-fileisexecuted,insteadofusingafixed value.Inthecommandfileforinstanceaquestionmark(?)canbeused insteadoftheparametervaluetoobtainthisfeature. Aquestionmark(?)insteadofacommandgivesalistofallavailable commands. Astar(*)indicatesthattheremainderofthecommandlineconsistsof comments. GEM-INTERFACE  Operationsmarkedwithastar(*)areonlyavailableinthecommand interpreter. Dialogboxes  ParametersareenteredinthedialogboxesbyfirstpushingtheESC buttontodeletethedefaultvalueandtogotothefirstposition.Only atthefirstpositionminussignsareallowed. Therearetwospecialdialog-boxes.Oneisforthethresholdcommand.The defaultthresholdvalueiscomputedeachtimeanewinput-imageis selected. Theotherspecialboxisforthepalette.Ifacolorischosenthecolor coefficientsareshownintheeditabletextlineunderneath.Ifthe coefficientsarechangedandanyothercolor-boxisclickedtheeffectof thechangesarevisible.Thethreecoefficientsrepresentthered,green andblue,andmayvaryfrom0to7.Highervaluesarecastto7. OPERATIONS IN AIM  FILE OPERATIONS  readf[ile]: readsanimagefromdisk. Thefirstcommandparameteristheimagename,thesecondoptional parameteristheimagememory(A,B,C,D).DefaultisimagememoryA.The extensionofangrey-valueimagefileis.IM.Availablestandardimages are:TRUI.IM,CERMET.IM,TUD.IMandASBEST.IM.Whennoextensionis given.IMisassumed. (Whentheextensionis.COLacolourimageisreadin). Whennoheaderfileispresentastandardimagesizeisassumed, otherwisethedescriptionfromtheheaderfileisused. Whentheextensionis.PI1or.PI3aDEGASfileisconvertedtoagrey- valueimageof320x200pixels.Whentheextensionis.NEOaneochrome fileisconvertedtoagrey-valueimageof320x200pixels. command: readf image-file, image default : readf trui  , A range :  -  , creadf[ile]: readsacolourimagefromdisk. Thefirstcommandparameteristheimagename,thesecondoptional parameteristheimagememory(A,B,C,D).DefaultisimagememoryA. Theextensionofacolorimageis.COL.Availablecolorimagesare: MANDRIL.COL,MAID.COL,GIRL.COLandARLES.COL. Whennoextensionisgiven.COLisassumed. (Whentheextensionis.IMagrey-valueimageisreadin). Whennoheaderfileispresentastandardimagesizeisassumed. otherwisethedescriptionfromtheheaderfileisused. Whentheextensionis.PI1aDEGASfileisconvertedtoacolourimageof 160x100pixels.Whentheextensionis.NEOaneochromefileis convertedtoacolourimageof160x100pixels. command: creadf image-file, image default : creadf mandril  , A range :  -  , writf[ile]: writesanimagetodisk. Thefirstcommandparameteristheimagememory(A,B,C,D).Thesecond parameteristhenameoftheimage-file.Whennoextensionisgiven.IM isassumed.Besidestheimagefilealsoaheaderfileiswritten (extension.HD).TheheaderstructureisgivenintheAppendix. Whentheextensionis.PI1or.PI3aDEGASfileiswritten.Whenthe extensionis.NEOaneochromefileiswritten. command: writf image, image-file default : writf A , dummy range : ,  loadsetup  Thiscommandloadsasetupfile.Thesetupfiledescribesthepathofthe imagefiles(read/write),thecommandfiles,thehelpfiles,theaspectand align-flagsandthepositionofthewindows. savesetup  Thiscommandsavesthecurrentsettings(pathsandwindowpositions)ina setupfiles. Macro:selectsandstartsacommandfile. @filenameisacommandfile.An@startsthecommandfile.Commandfiles maybenestedupto16levels.Anexampleisgivenin@demo.The extensionofcommandfilesis.AIM.Theseextensionsareaddedtothe commandfilenamebyAIM. Wheninfinite=-1thecommandfileisinfinitelyrepeated. command:@name.AIM,infinite default:-,0 range:-,<-1,0>  Logging  Whentheloggingisonallenteredcommandsarestored.Whenthelogging isswitchedoff,thestoredcommandsarewritteninalogfile.Inthis wayautomaticallycommandfilescanbecreated. exit : endstheprogram. ThisactioncanalsobeobtainedbytypingControl-Corbyclickingthe close-boxofthecommand-window. command: exit  ARITHMETICGREY-VALUEOPERATIONS  copy : copiesanimage. Thecommandparametersaretheinputimageandtheoutputimage (A,B,C,D). command: copy input-image, output-image default : copy A , B range : , add : addstwoimages. Thefirstcommandparameteristheinput-image.Thesecondparameteris theoutput-imagetowhichtheinput-imageisadded. output-image= (input-image+ output-image)/2 command: add input-image, output-image default : add A , B range : , sub : subtractstwoimages. Thefirstparameteristheinput-image.Thesecondparameteristhe output-imagefromwhichtheinput-imageissubtracted.Thethirdparame terisaconstantwhichcanbeaddedtotheimage.Astheimagecannot becomenegative,theresultingvalueisclippedbelow0andabove255. output-image= (output-image- input-image) + constant command: sub input-image, output-image, constant default : sub A , B , 0 range : ,   , <-255,255> mul : multipliestwoimages. Theoutput-image(secondparameter)ismultipliedbytheinput-image (firstparameter). output-image= (input-image* output-image)/256 command: mul input-image, output-image default : mul A , B range : , div : dividestwoimages. Theoutput-image(secondparameter)isdividedbytheinput-image(first parameter). output-image= (output-image/ input-image) command: div input-image, output-image default : div A , B range : , (*)minimum : minimumoftwoimages. Theoutput-image(secondparameter)istheminimumoftheoutput-image andtheinput-image(firstparameter). output-image= minimum(input-image,output-image) command: minimum input-image, output-image default : minimum A , B range :  , (*)maximum : maximumoftwoimages. Theoutput-image(secondparameter)isthemaximumoftheoutput-image andtheinput-image(firstparameter). output-image= maximum(input-image,output-image) command: maximum input-image, output-image default : maximum A , B range :  , (*)mindev : takeinputvaluewithminimumdeviation. Theoutputpixelvalueisthatvalueofoneofthetwoinputimages,that differstheleastfromtheoutputpixelvalue. if|outputvalue-input1value|<|outputvalue-input2value| output=input1 else output=input2 command: mindev input1-image, input2-image,output-image default : mindev A  , B,C range :  , , cadd : addsaconstanttoanimage. Thefirstcommandparameteristheimage.Thesecondparameteristhe constantwhichisaddedtotheimage. command: cadd image , constant default : cadd A , 0 range : , <-255,255> cmul : multipliesanimagebyaconstant. Thefirstcommandparameteristheimage.Thesecondparameteristhe multiplicationconstant. command: cmul image , constant default : cmul A , 1 range : , <-255,255> cdiv : dividesanimagebyaconstant. Thefirstcommandparameteristheimage.Thesecondparameteristhe divisionconstant. command: cdiv image , constant default : cdiv A , 1 range : , <-255,255>  GREY-VALUEFILTERS  Apixelvalueintheoutputimageisdeterminedbythevalueofthepixel intheinputimagetogetherwiththepixelvaluesinalocalneighbour hoodaroundthepixel.Bothlinearandnon-linearoperationscanbe appliedtosuchaneighbourhood. LINEAR  Alinearfiltercanberealizedbymultiplyingapixelandits neighbourhoodbycoefficients.Theresultisthesumofthesemultiplica tionsandiscalledaconvolution.Examplesoflinearfiltersarethe 'laplace'and'gradient'filters. InAIMthesizeoflinearfiltersislimitedtoa3x3neighbourhood. 'Filter'isarotation-symmetrical3x3filterofwhichthecoefficients canbespecifiedbytheuser.Inthethe'laplace'and'gradient'filters thecoefficientsarefixed. Thecoefficientsare: -10-1-1-2-10-10cdchvcd -20-2000-15-1chvccchv -10-1-1-2-10-10cdchvcd x-gradienty-gradientlaplacefilter laplace : linear filter forimageenhancement. Thefirstcommandparameteristheinput-imageandthesecondparameter istheoutput-image.Defaultsare:Afortheinput-imageandBforthe output-image. command: laplace input-image, output-image default : laplace A , B range :  ,  gradx : horizontal gradient filter. Thefirstparameteristheinput-image(default A)andthesecond parameteristheoutput-image(default B).Theoutput-imagemaybe multipliedbyafactor(multiply/1024)andaconstant(add)maybeadded totheresult. output-image = gradx(input-image) * (multiply / 1024) + add command: gradx input-image, output-image, multiply, add default : gradx A , B , 1024 , 128 range :  , ,<1-10000>,<-255-255> grady : vertical gradient filter. Thefirstparameteristheinput-image(default A)andthesecond parameteristheoutput-image(default B).Theoutput-imagemaybe multipliedbyafactor(multiply/1024)andaconstant(add)maybeadded totheresult. output-image = grady(input-image) * (multiply / 1024) + add command: grady input-image, output-image, multiply, add default : grady A , B , 1024 , 128 range :  , ,<1-10000>,<-255-255> filter : 3x3 rotation-symmetrical filter. Thisfilterperformsageneral3x3rotation-symmetricalconvolution. Parametersaretheinput-image,theoutput-imageandthe3different coefficientsina3x3neighbourhood.Thecoefficientofthecentralpixel iscc,thecoefficientsofthehorizontalandverticalneighboursarechv andthecoefficientsofthediagonalneighboursarecd.Theresultmaybe multipliedbyafactor(multiply/1024)andaconstant(add)maybe addedtotheresult. output-image= filter(input-image) * (multiply/1024) + add command : filter input-image, output-image, cd, chv, cc, multiply, add default: filter  A,  B , 0 , -1 , 4 ,2048, 0 range:  ,,<-/+1000>,<10000>,<-+255> unif : uniformfilter. Thisfilterdeterminesforeachpixeltheaverageofalocalneighbour hoodintheinput-image.Thisaveragebecomesthepixelvalueinthe output-image. Thefirstparameteristheinput-image,thesecondparameteristhe output-image.Thethirdparameteristhesizeofthelocalneighbourhood. Thissizeisanoddvaluebetween1and63. command: unif input-image,output-image, neighbourhoodsize default : unif A , B , 3 range :  , , <1,63> NON-LINEAR  Non-linearfiltersperformimageoperationswhichareimpossiblewith linearfilters.Noisecanbesuppressedwithanon-linearfilterwithout deterioratingedgesinanimage.Onlythemedianfilter,theminimumand themaximumfilterareimplementedinAIM. medi : medianfilter. Themedianfilterdeterminesforeachpixelthemedian(themiddle)value ofalocal(3x3)neighbourhoodintheinput-image.Thismedianvalue becomesthepixelvalueintheoutput-image. Thisfiltersuppressesnoise. Thefirstparameteristheinput-image,thesecondparameteristhe output-image. command: medi input-image,output-image default : medi A , B range :  , lmin : localminimum filter. Theminimumfilterdeterminesforeachpixeltheminimumofalocal neighbourhoodintheinput-image.Thisminimumbecomesthepixelvaluein theoutput-image.Thisoperationresultsinanextensionofthedark partsinanimage.Thisoperationisalsocalledgrey-valueerosion. Thefirstparameteristheinput-image,thesecondparameteristhe output-image.Thethirdparameteristhesizeofthelocalneighbourhood. Thissizeisanoddvaluebetween1and63.Theoperationisillustrated in@demo5and@demo7. command: lmin input-image,output-image, neighbourhoodsize default : lmin A , B , 3 range :  , , <1,63> lmax : localmaximum filter. Themaximumfilterdeterminesforeachpixelthemaximumofalocal neighbourhoodintheinput-image.Thismaximumbecomesthepixelvaluein theoutput-image.Thisoperationresultsinanextensionofthebright partsofanimage.Thisoperationisalsocalledgrey-valuedilation. Thefirstparameteristheinput-image,thesecondparameteristhe output-image.Thethirdparameteristhesizeofthelocalneighbourhood. Thissizeisanoddvaluebetween1and63. command: lmax input-image,output-image, neighbourhoodsize. default : lmax A , B , 3 range :  , , <1,63> (*)hara : non-linear edgefilter. Thefilterharaperformsavariant(LucasvanVliet)ofthe3x3Lee- Haralickedgefilter(Patt.Rec.Conf.,Paris'86). Thisfilterisbasedupontheweighteddifferencebetweentheoriginal imageandthelocalminimumandlocalmaximumfilteredimages. Thefirstcommandparameteristheinput-imageandthesecondparameter istheoutput-image.Defaultsare:Afortheinput-imageandBforthe output-image. command: hara input-image, output-image default : hara A , B range :  ,  (*)have : non-linear laplacelikefilter.  Thefilterhaveperformsanon-linearlaplacelike-likeoperation inspiredbythe3x3Lee-Haralickedgefilter(Patt.Rec.Conf.,Paris '86). Addingthehaveresulttotheoriginalgivessharpeningasinthelinear laplacefilter. Thisfilterisbasedupontheweighteddifferencebetweentheoriginal imageandthelocalminimumandlocalmaximumfilteredimages. Thefirstcommandparameteristheinput-imageandthesecondparameter istheoutput-image.Defaultsare:Afortheinput-imageandBforthe output-image. command: have input-image, output-image default : have A , B range :  ,  equal(ization) : histogram equalization. Thisoperationreassignsthegrey-valuesinanimageandresultsinan "optimum"useoftheavailablegrey-values.Thegrey-valuehistogramof theoutputimageisasflataspossible(giventhenecessaryrequantiza tion).Anexampleisgivenin@demo1. command: equal input-image, output-image default : equal A , B range : , thresh[olding]: transformsagrey-valueimageinabinaryimage. Thebinaryimageisobtainedbythresholdingtheinputimage.After thresholdingbinaryimageoperationsmaybeapplied.Pixelswithagrey- valueabovethethresholdgetthebinaryvalue'1'andthusbecomewhite. Pixelswithagrey-valuebelowthethresholdgetthebinaryvalue'0'and becomeblack.Thedefaultvalueofthethresholdisobtainedfromthe grey-valuehistogramwiththemethodofRidler&Calvert. command: thresh input-image, output-image, bitplane,threshold default : thresh A , B ,1,automatic range : , , <1,8>,<0,255>  CELLULAR LOGIC (BINARY) OPERATIONS  Theseoperationscanbeappliedtothe8bitplanesofanimage.The bitplanesarenumberedfrom1to8.Ablackpixelhasthevalue'0',a whitepixelhasthevalue'1'. Theedgevalueoftheimagecanbesetto'0'or'1'inalloperations. Thedefaultvalueoftheimageedgeisblack(0).Thegivennumberof iterationsisamaximum.Theiterationsstopwhennochangesinthepixel valuesoccuranymore. Thenumberofiterationsisshowninthatcase. erosion : erodeswhiteobjects. Onelayerofthewhiteobjectsispeeledoffineachiteration.White objectswhicharesmallerthanthenumberofiterations*2will disappear.Theconnectivitydetermineswhichwhitepixelsbelongtoa layertobepeeledoff.Whentheconnectivityis4thislayerconsistsof thosewhitepixelsthathaveahorizontalorverticalblackneighbour. Whentheconnectivityis8alayerconsistsofthosewhitepixelsthat haveahorizontal,verticalordiagonalblackneighbour.Whenthe connectivityis6fortheodditerationsa4-connectivityisusedandfor theeveniterationsan8-connectivityisused.Theerosionisillustrated in@demo6. command:erosion #iterations, bitplane, connectivity, edge,image default :erosion 1 , 1 , 6 , 0,B range : <1,512> , <1,8> , <4,6,8> , <0,1>, dilation: extendswhiteobjects. Onelayerisaddedtothewhiteobjectsineachiteration.Blackparts suchasholeswhicharesmallerthanthenumberofiterations*2will disappear.Theconnectivitydetermineswhichblackpixelsbelongtoa layertobeadded.Whentheconnectivityis4thislayerconsistsof thosewhitepixelsthathaveahorizontalorverticalwhiteneighbour. Whentheconnectivityis8alayerconsistsofthoseblackpixelsthat haveahorizontal,verticalordiagonalwhiteneighbour.Whenthe connectivityis6fortheodditerationsa4-connectivityisusedandfor theeveniterationsan8-connectivityisused. command:dilation #iterations, bitplane, connectivity,edge,image default :dilation  1 , 1 , 6 , 0,B range :  <1,512> , <1,8> , <4,6,8> ,<0,1>, propag[ation]: dilatesa bitplane underamask. Thepropagationstronglyresemblesthedilation.However,theblack pixelsareonlyaddedwhentheyarewhite(1)inthemaskbitplane.The propagationcanbeusedtofindtheoriginalshapesofobjectswhich remainedafteranumberoferosioniterations.Thisapplicationisalso shownin@demo6. Thefirstparameteristhenumberofiterations.Thesecondparameteris thebitplaneofwhichthedilationtakesplace(seedbitplane).Thethird parameteristhemaskbitplane.Theotherparametersareagainthe connectivityandtheimageedgevalue.Whentheedgevalueis0onlythe seedbitplaneispropagated.Whentheedgevalueis1onlytheedgeis propagatedandwhentheedgevalueis2boththeedgeandtheseed bitplanearepropagated. command: propag #iterations,bitplane,maskbitplane,connectiv,edge,image default : propag 1  , 1 , 2  , 6, 0,A range : <1,512> , <1,8> , <1,8> , <4,6,8>,<0,2>, skelet : skeletonwith endpixels. Theskeletonisan1pixelthicklineinthemiddleofwhiteobjects.The skeletonoperationresemblestheerosion,butinthiscasepixelsofa layerareonlydeleted,whentheirdeletiondoesnotchangethetopology oftheimage.(Theyarenotbreakpixels).Anadditionalrestrictionis thatapixelmaynotbedeletedattheendofaskeleton(line).The numberofiterationsmustbesufficientlylargetofindthecomplete skeleton(thebiggestdiameterofthewhiteobjectsdividedby2). Theoperationstopswhenthenumberofiterationsisreachedorwhenno pixelschangeanymore.Anexampleisgivenin@demo3. command: skelet #iterations, bitplane, edgevalue,image default : skelet  100 , 1 , 0,B range : <1,512> , <1,8> , <0,1>, -skelet : skeletonwithout endpixels Theskeletonwithoutendpixelsisthesameasthepreviousskeleton operation,butendpixelsmaybedeletedinthiscase.Solidobjectswill resultinsinglepixelsandholesinobjectswillresultinrings.This isillustratedbytheskeletonofthebackground(exo-skeleton)in @demo4. command: -skelet #iterations, bitplane,edgevalue,image default : -skelet  100 , 1 , 0,B range : <1,512> , <1,8> , <0,1>, contour : determinesthecontoursofobjects. Theresultistheedgesofwhiteobjects.Thismeansallwhitepixels withoneormoreblackneighbours. command: contour bitplane, edgevalue,image default : contour 1 , 0,B range : <1,8> , <0,1>, majority : performsamajorityvoting. Thecentralpixelofa3x3neighbourhoodbecomesblackorwhitedepending uponthemajorityoftheneighbourhood. command: majority bitplane, edgevalue,image default : majority 1 , 0,B range : <1,8> , <0,1>,  remove[noise]: removes pepper andsaltnoise. Awhitepixelinacompleteblack3x3neighbourhoodbecomesblack.A blackpixelinacompletewhite3x3neighbourhoodbecomeswhite. command: remove bitplane, edgevalue,image default : remove 1 , 0,B range :  <1,8> , <0,1>, life : game of life Thewell-knowngameoflifeisalsoacellularlogicoperation ! command: life #iterations,bitplane, edgevalue,image default : life 1, 1 ,  0,B range : <1,512>,<1,8> , <0,1>, SPECIAL LINEFIGURE PIXELS  sinpix[els]:determinesisolated whitepixels Thesewhitepixelshavenowhiteneighbourina3x3neighbourhood. command: sinpix bitplane, edgevalue,image default : sinpix 1 , 0,B range : <1,8> , <0,1>, endpix[els]: determinesendpixelsofalinefigure. Thesewhitepixelshaveonlyonewhiteneighbourina3x3neighbourhood. command: endpix bitplane, edgevalue,image default : endpix 1 , 0,B range :  <1,8> , <0,1>, linkpix[els]: determineswhitepixels with two whiteneighbours. Thesewhitepixelshavetwowhiteneighboursina3x3neighbourhood. command: linkpix bitplane, edgevalue,image default : linkpix 1 , 0,B range : <1,8> , <0,1>, vertices: determinestheverticesinalinefigure. Thesewhitepixelshavemorethantwowhiteneighboursina3x3 neighbourhood. command: vertices bitplane, edgevalue,image default : vertices 1 , 0,B range : <1,8> , <0,1>,  BIT OPERATIONS  bcopy : copiesa bitplane. Thecommandparametersaretheinput-bitplaneandtheoutput-bitplane. command: bcopy input-bitplane,output-bitplane,input-image,output-image default : bcopy 1 , 3,B,B range : <1,8> , <1,8>,, and : AND-function oftwo bitplanes. Thecommandparametersaretheinput-bitplanesofwhichtheAND-function istakenandtheoutput-bitplane. command: and bitplanein1,bitplanein2,bitplaneout,image default : and 1  , 2 , 2,B range :  <1,8> ,  <1,8> , <1,8>, or : OR-function oftwo bitplanes Thecommandparametersaretheinput-bitplanesofwhichtheOR-function istakenandtheoutput-bitplane. command: or bitplanein1,bitplanein2,bitplaneout,image default : or 1  , 2 , 2,B range : <1,8> , <1,8> , <1,8>, exor : EXOR-function oftwobitplanes Thecommandparametersaretheinput-bitplanesofwhichtheEXOR-function istakenandtheoutput-bitplane. command: exor bitplanein1,bitplanein2,bitplaneout,image default : exor 1 , 2 , 2,B range : <1,8> , <1,8> , <1,8>, invert : invertsa bitplane Thefirstcommandparameteristhebitplane.Thesecondcommandparameter istheimage. command: invert bitplane,image default : invert 1,B range : <1,8>, set : sets a bitplane,somakesitwhite (1). Thefirstcommandparameteristhebitplane.Thesecondcommandparameter istheimage command: set bitplane,image default : set 1,B range : <1,8>, reset : resets a bitplane,somakesitblack (0). Thefirstcommandparameteristhebitplane.Thesecondcommandparameter istheimage. command: reset bitplane,image default : reset 1,B range : <1,8>, label:labelsconnectedcomponents. Thiscommandlabelstheconnectedcomponentswithinabinaryimage.The maximumnumberoflabelsis255.(Inlowresolutionthebestdisplayis obtainedby:don,3followedbybdisp.) command:input-image,output-image,inputbitplane,connectivity default:B,A,1,8 range:,,<1-8>,<4,6,8> UTILITIES  (*)don:Automaticdisplayon Whentheautomaticdisplayison,aftereachoperationtheresultis shown. Anoptionalparametergivesthetypeofdisplayinthelow-resolution mode.Anexampleisgivenin@democ5. 0 : displayoff(sameasdoff) 1 : Whenallpixelsofa2x2neighbourhoodintheoriginal bitplaneare '0'ablackdotisdisplayed.Whenallpixels ofa2x2neighbourhoodin thebitplaneare'1'awhitedot isdisplayed.Inallothercasesagrey dotisdisplayed. 2 : ThebitplaneissampleddependingupontheGEMwindowsize.Whenthe firstpixelofasampleregionis'0'ablackdotisdisplayed.Whenthe firstpixelis'1'awhitedotisdisplayed. 3 : Multiplebitplanedisplay.Bitplanesaresampleddependinguponthe GEMwindowsize.Bitplane1isdisplayedinred,bitplane2inblueand bitplane3ingreen.Whenallthreelowestbitplanesare'0',the3 highestbitplanesareshownasgrey-value. 4 : Multiplebitplanedisplay.Bitplanesaresampleddependinguponthe GEMwindowsize.Bitplane8isdisplayedinred,bitplane7isdisplayed inblueandbitplane6isdisplayedingreen. command:don,display_type default:don,1 range:don,<0,4> (*)doff:Automaticdisplayoff Whentheautomaticdisplayisoff,onlyanimageisdisplayedaftera gdisporbdispcommand. command:doff (*)ton:Timeron Theexecutiontimeofeachcommandisdisplayedwhenthetimerison. command:ton (*)toff:Timeroff Setstimeroff. command:toff gdisp: Grey-value/colordisplayofanimage. Thisroutinedisplaysagrey-valueimageas256x256blackorwhitedots inhighresolution.Inlowresolution128x128pixelsof8grey-values aredisplayed.Imagesarealwaysdisplayedwithmaximumcontrast.When theimageisacolorimageitisdisplayedincolorinthelowresolution mode.Parameteristheimage(AtoD). command: gdisp image default : gdisp A range : bdisp: Displaysoneofthe 8 bitplanes ofanimage. Firstcommandparameteristheimage(defaultA).Secondparameteristhe bitplane(default1).Inhighresolutionblackorwhitepixelsare displayed.Thetypeofdisplayinlowresolutionisdeterminedbythe (optional)donparameter. command: bdisp image,bitplane default : bdisp A , 1 range : , <1,8> hist: calculatesthe histogram ofanimage. Thehistogramisdisplayedinoverlayintheappropriateimagewindow(A toD).Athresholdiscalculatedfromthehistogramtosegmenttheimage (forthethreshcommand).Thecommandparameteristheimage(default A). command: hist image default : hist A range : Palette:Changethepaletteinteractively. Thisoptionisonlysupportedinthelow-resolutionmode. Preferences:Changepreferences. Whentheimagewindowsaresized,theaspectsratiocanbepreservedor not. Theimagescanbealignedtobyteboundariesornot. help : gives help information. command: help command  APPENDIX:Fileheaderstructure /* callthe headerfile *.hd, thisfilecontainsthestructurewith all parameters ofthecorrespondingimage file *.im. */ typedefstruct { short*address;/*image_addressinmemory*/ short format; /* format */ short sizex; /* dimension 1 */ short sizey; /* dimension 2 */ short sizez; /* dimension 3 */ unsigned short commsz; /* size of comment in bytes */ short data[16]; /* user image dependent data*/ } HEADER; #define F_WORDS 0 /* format words in the image */ #define F_BYTES 1 /* format bytes in the image */ #define F_FOBIT 2 /* four bits image, packed in 4 pix/word */ #define F_TWBIT 3 /* two bits image, packed in 8 pix/word */ #define F_SBITS 4 /* format single bits in the image */  ACKNOWLEDGEMENT  ThefollowingpeoplecontributedtoAIM: Frans Groen (TUD) : imageprocessing. Robert de Vries (TUD) : GEM interface. Igor Weber (Universityof Zagreb, YU) : low-resolutionandcolour display. Gert van Antwerpen (CBD) : lmin,lmax,unif,label PietVerbeek(TUD):hara,havefilter LucasvanVlietand :erosion,dilation,propagation, BenVerwer(TUD)skeleton Jaap Joosten (TUD) : testsand evaluation. Rijswijk, 1July 1987. Pleasesendremarksandcommentsto : Frans Groen AppliedPhysicsDepartment Delft UniversityofTechnology Lorentzweg 1 2628 CJ Delft TheNetherlands tel (31)15-781416 AIM : ATARI IMAGE MANAGER The image processing program AIM 2.3 for the ATARI ST has been developed by Frans Groen and Robert de Vries of the Delft University of Technology. Frans is a scientific staff member of of the section "Pattern Recognition" of the vakgroep Signal / System Techniques (ST), Robert is a student of another section of the same vakgroep. AIM runs in high-resolution and low-resolution mode. The medium-resolution mode is not supported. AIM has been written in the C-language using the Lattice C-compiler. The purpose of the program is to experiment with digital image processing. User interface The user interface of AIM consists of: -GEM interface. Operations and parameters can be selected by means of dialog boxes and drop-down menus. A choice from a menu results in a command which is passed to the command interpreter. Image displays can be moved and sized. -Command interpreter. Sequences of commands can be put together in a command file. When the logging is on, commands which are entered are also stored in a log command file. A command file may be called within another command file up to 16 levels deep. Images in AIM Four image memories are available in AIM 2.3. The image memories are 8 bit wide and have a maximum size of 65536 pixels. Standard aim images have a the size of 256 x 256 pixels. These image memories are displayed at the ATARI screen. The windows are designated with 'A', 'B', 'C' and 'D'. The position of the windows is obtained from a setup file. Image windows can be moved and sized. A colour image consists of 4 memories with a maximum of 16384 pixels respectively for the intensity, red, green and blue sub-images. This maximum size is the result from the current 1M byte memory restriction of the Atari ST. When the memory increases, larger colour images could be supported. Standard aim colour images have a size of 4 times 128 x 128 pixels. They occupy the same area as an grey-value image of size 256 x 256. Most of the (colour) image operations are applied to all sub-images of a colour image. Some image operations (gradx, grady, equal ) are performed on the intensity sub-image of a colour image. After such an operation the red, green and blue colour values are updated according to the new intensity value. The 8 bitplanes of the grey-value images can also be used as 8 binary images. Binary and Cellular Logic operations can be performed on these bitplanes. The bitplanes are numbered from 1 to 8. When an image is read from disk all 8 bitplanes are read simultaneously. The same holds when an image is written to disk. An image is displayed in the grey-value mode when the extension is .IM and in color mode when the extension is .COL. The display of color images is only supported in the low-resolution mode. Also DEGAS and Neochrome images can be read or written. With the read command these pictures are converted to 320 x 200 grey-value images. With the cread command they are converted to colour images of size 160 x 100. When the extension is .PI1 or .PI3 a DEGAS file is read or written, when the extension is .NEO a neochrome file is read or written. Examples are given in @democ4. Great care should be taken by storing images in degas or neochrome format. In these formats a limited number of grey values or colours is used (palette), so a drastic reduction of information takes place, which limits the possibility of further image processing. Images are stored in full grey or colour resolution in the AIM format. In the high resolution mode a standard grey-value image is represented by 256 x 256 black and white dots. (there are only 2 grey values possible: white and black). A sigma-delta technique is used to obtain a local density of the dots representing as good as possible the grey-values in the image. In a binary display 0 gives a black dot and 1 a white dot. In the low resolution mode a standard grey-value image is represented by 128 x 128 pixels in 8 grey-values. Again a sigma-delta technique is used to represent as good as possible the original 256 grey values. As the standard images have a size of 256 x 256 pixels, in the low-resolution mode only 1 pixel out of each 2x2 pixel neighbourhood is displayed. In the default binary low-resolution mode (don 1) a black dot is displayed when all pixels of a 2x2 neighbourhood are '0' and a white dot is displayed when all pixels in a 2x2 neighbourhood are '1'. In all other cases a grey dot is displayed. A standard color image is displayed in 128 x 128 pixels with 16 different colors. An optimum palette is chosen for the currently displayed image. So the palettes of other images are no longer correct. The palette of the image which is on top is displayed. Clicking on another window brings it on top with the correct palette. Standard grey-value images on disk (extension .IM) consist of 256 lines of 256 pixels (unsigned characters) of 1 byte. So an image consists of 65536 bytes in total. The sequence is line by line from top left to bottom right. Standard color images on disk (extension .COL) consist of a sequence of 4 sub-images of 128 lines of 128 pixels (unsigned characters) of 1 byte. The sub-images are intensity, red, green and blue respectively. When an image does not have a standard format a header is needed (extension .HD), describing the image width and height. The header used is the header of the Centre for Image Processing Delft and is given in the Appendix. When an image is written in the AIM format always a header is written. Command interpreter It is not necessary to give the complete command name. The smallest number of letters which gives no ambiguity is sufficient. It is possible to edit your commands in a simple way. The delete- or backspace-key delete the last character. CONTROL-X deletes the whole line. A sequence of commands which perform a certain operation may be grouped to a command file and stored on disk. The extension of command files is .AIM. When the logging is on all the entered commands are stored. When the logging is switched off a log command file is written to disc. Command files are executed by typing @name (without the extension). A new command file can be called from a command file and may be nested up to 16 levels deep. So typing @command-file-name instead of a command executes the command-file. ESC stops the execution of a commandfile and asks the user to go on or not. Default values are used when a parameter is not given. When an erroneous value of a parameter is given, the command interpreter asks for a correct value. If in this case a return is given, the default value is used. This gives the possibility to ask for a parameter value when a command-file is executed, instead of using a fixed value. In the commandfile for instance a question mark (?) can be used instead of the parameter value to obtain this feature. A question mark (?) instead of a command gives a list of all available commands. A star (*) indicates that the remainder of the commandline consists of comments. GEM-INTERFACE Operations marked with a star (*) are only available in the command interpreter. Dialog boxes Parameters are entered in the dialog boxes by first pushing the ESC button to delete the default value and to go to the first position. Only at the first position minus signs are allowed. There are two special dialog-boxes. One is for the threshold command. The default threshold value is computed each time a new input-image is selected. The other special box is for the palette. If a color is chosen the color coefficients are shown in the editable text line underneath. If the coefficients are changed and any other color-box is clicked the effect of the changes are visible. The three coefficients represent the red, green and blue, and may vary from 0 to 7. Higher values are cast to 7. OPERATIONS IN AIM FILE OPERATIONS readf[ile]: reads an image from disk. The first command parameter is the image name, the second optional parameter is the image memory (A,B,C,D). Default is image memory A. The extension of an grey-value image file is .IM. Available standard images are : TRUI.IM, CERMET.IM, TUD.IM and ASBEST.IM. When no extension is given .IM is assumed. (When the extension is .COL a colour image is read in). When no header file is present a standard image size is assumed, otherwise the description from the header file is used. When the extension is .PI1 or .PI3 a DEGAS file is converted to a grey- value image of 320 x 200 pixels. When the extension is .NEO a neochrome file is converted to a grey-value image of 320 x 200 pixels. command : readf image-file, image default : readf trui , A range : - , creadf[ile]: reads a colour image from disk. The first command parameter is the image name, the second optional parameter is the image memory (A,B,C,D). Default is image memory A. The extension of a color image is .COL. Available color images are : MANDRIL.COL, MAID.COL, GIRL.COL and ARLES.COL. When no extension is given .COL is assumed. (When the extension is .IM a grey-value image is read in). When no header file is present a standard image size is assumed. otherwise the description from the header file is used. When the extension is .PI1 a DEGAS file is converted to a colour image of 160 x 100 pixels. When the extension is .NEO a neochrome file is converted to a colour image of 160 x 100 pixels. command : creadf image-file, image default : creadf mandril , A range : - , writf[ile]: writes an image to disk. The first command parameter is the image memory (A,B,C,D). The second parameter is the name of the image-file. When no extension is given .IM is assumed. Besides the image file also a header file is written (extension .HD). The header structure is given in the Appendix. When the extension is .PI1 or .PI3 a DEGAS file is written. When the extension is .NEO a neochrome file is written. command : writf image, image-file default : writf A , dummy range : , load setup This command loads a setup file. The setup file describes the path of the image files (read/write), the commandfiles, the helpfiles, the aspect and align-flags and the position of the windows. save setup This command saves the current settings (paths and window positions) in a setup files. Macro : selects and starts a commandfile. @filename is a command file. An @ starts the command file. Command files may be nested up to 16 levels. An example is given in @demo. The extension of command files is .AIM. These extensions are added to the command file name by AIM. When infinite = -1 the commandfile is infinitely repeated. command : @name.AIM,infinite default : - , 0 range : - , <-1,0> Logging When the logging is on all entered commands are stored. When the logging is switched off, the stored commands are written in a log file. In this way automatically command files can be created. exit : ends the program. This action can also be obtained by typing Control-C or by clicking the close-box of the command-window. command : exit ARITHMETIC GREY-VALUE OPERATIONS copy : copies an image. The command parameters are the input image and the output image (A,B,C,D). command : copy input-image , output-image default : copy A , B range : , add : adds two images. The first command parameter is the input-image. The second parameter is the output-image to which the input-image is added. output-image = (input-image + output-image )/2 command : add input-image , output-image default : add A , B range : , sub : subtracts two images. The first parameter is the input-image. The second parameter is the output-image from which the input-image is subtracted. The third parameter is a constant which can be added to the image. As the image cannot become negative, the resulting value is clipped below 0 and above 255. output-image = (output-image - input-image ) + constant command : sub input-image , output-image , constant default : sub A , B , 0 range : , , <-255,255> mul : multiplies two images. The output-image (second parameter) is multiplied by the input-image (first parameter). output-image = (input-image * output-image )/256 command : mul input-image , output-image default : mul A , B range : , div : divides two images. The output-image (second parameter) is divided by the input-image (first parameter). output-image = (output-image / input-image ) command : div input-image , output-image default : div A , B range : , (*) minimum : minimum of two images. The output-image (second parameter) is the minimum of the output-image and the input-image (first parameter). output-image = minimum (input-image, output-image ) command : minimum input-image , output-image default : minimum A , B range : , (*) maximum : maximum of two images. The output-image (second parameter) is the maximum of the output-image and the input-image (first parameter). output-image = maximum (input-image, output-image ) command : maximum input-image , output-image default : maximum A , B range : , (*) mindev : take input value with minimum deviation. The output pixel value is that value of one of the two input images, that differs the least from the output pixel value. if |output value - input1 value| < |output value - input2 value| output = input1 else output = input2 command : mindev input1-image , input2-image, output-image default : mindev A , B , C range : , , cadd : adds a constant to an image. The first command parameter is the image. The second parameter is the constant which is added to the image. command : cadd image , constant default : cadd A , 0 range : , <-255,255> cmul : multiplies an image by a constant. The first command parameter is the image. The second parameter is the multiplication constant. command : cmul image , constant default : cmul A , 1 range : , <-255,255> cdiv : divides an image by a constant. The first command parameter is the image. The second parameter is the division constant. command : cdiv image , constant default : cdiv A , 1 range : , <-255,255> GREY-VALUE FILTERS A pixel value in the output image is determined by the value of the pixel in the input image together with the pixel values in a local neighbourhood around the pixel. Both linear and non-linear operations can be applied to such a neighbourhood. LINEAR A linear filter can be realized by multiplying a pixel and its neighbour- hood by coefficients. The result is the sum of these multiplications and is called a convolution. Examples of linear filters are the 'laplace' and 'gradient' filters. In AIM the size of linear filters is limited to a 3x3 neighbourhood. 'Filter' is a rotation-symmetrical 3x3 filter of which the coefficients can be specified by the user. In the the 'laplace' and 'gradient' filters the coefficients are fixed. The coefficients are : -1 0 -1 -1 -2 -1 0 -1 0 cd chv cd -2 0 -2 0 0 0 -1 5 -1 chv cc chv -1 0 -1 -1 -2 -1 0 -1 0 cd chv cd x-gradient y-gradient laplace filter laplace : linear filter for image enhancement. The first command parameter is the input-image and the second parameter is the output-image. Defaults are: A for the input-image and B for the output-image. command : laplace input-image , output-image default : laplace A , B range : , gradx : horizontal gradient filter. The first parameter is the input-image (default A) and the second parameter is the output-image (default B). The output-image may be multiplied by a factor (multiply/1024) and a constant (add) may be added to the result. output-image = gradx(input-image ) * (multiply / 1024) + add command : gradx input-image , output-image , multiply, add default : gradx A , B , 1024 , 128 range : , ,<1-10000>,<-255-255> grady : vertical gradient filter. The first parameter is the input-image (default A) and the second parameter is the output-image (default B). The output-image may be multiplied by a factor (multiply/1024) and a constant (add) may be added to the result. output-image = grady(input-image ) * (multiply / 1024) + add command : grady input-image , output-image , multiply, add default : grady A , B , 1024 , 128 range : , ,<1-10000>,<-255-255> filter : 3x3 rotation-symmetrical filter. This filter performs a general 3x3 rotation-symmetrical convolution. Parameters are the input-image, the output-image and the 3 different coefficients in a 3x3 neighbourhood. The coefficient of the central pixel is cc, the coefficients of the horizontal and vertical neighbours are chv and the coefficients of the diagonal neighbours are cd. The result may be multiplied by a factor (multiply / 1024) and a constant (add) may be added to the result. output-image = filter(input-image ) * (multiply/1024) + add command : filter input-image, output-image, cd, chv, cc, multiply, add default : filter A , B , 0 , -1 , 4 , 2048 , 0 range : , , <-/+1000> , <10000> ,<-+255> unif : uniform filter. This filter determines for each pixel the average of a local neighbourhood in the input-image. This average becomes the pixel value in the output- image. The first parameter is the input-image, the second parameter is the output-image. The third parameter is the size of the local neighbourhood. This size is an odd value between 1 and 63. command : unif input-image ,output-image , neighbourhood size default : unif A , B , 3 range : , , <1,63> NON-LINEAR Non-linear filters perform image operations which are impossible with linear filters. Noise can be suppressed with a non-linear filter without deteriorating edges in an image. Only the median filter, the minimum and the maximum filter are implemented in AIM. medi : median filter. The median filter determines for each pixel the median (the middle) value of a local (3x3) neighbourhood in the input-image. This median value becomes the pixel value in the output-image. This filter suppresses noise. The first parameter is the input-image, the second parameter is the output-image. command : medi input-image ,output-image default : medi A , B range : , lmin : local minimum filter. The minimum filter determines for each pixel the minimum of a local neighbourhood in the input-image. This minimum becomes the pixel value in the output-image. This operation results in an extension of the dark parts in an image. This operation is also called grey-value erosion. The first parameter is the input-image, the second parameter is the output-image. The third parameter is the size of the local neighbourhood. This size is an odd value between 1 and 63. The operation is illustrated in @demo5 and @demo7. command : lmin input-image ,output-image , neighbourhood size default : lmin A , B , 3 range : , , <1,63> lmax : local maximum filter. The maximum filter determines for each pixel the maximum of a local neighbourhood in the input-image. This maximum becomes the pixel value in the output-image. This operation results in an extension of the bright parts of an image. This operation is also called grey-value dilation. The first parameter is the input-image, the second parameter is the output-image. The third parameter is the size of the local neighbourhood. This size is an odd value between 1 and 63. command : lmax input-image ,output-image , neighbourhood size. default : lmax A , B , 3 range : , , <1,63> (*)hara : non-linear edge filter. The filter hara performs a variant (Lucas van Vliet) of the 3x3 Lee- Haralick edge filter (Patt. Rec. Conf., Paris '86). This filter is based upon the weighted difference between the original image and the local minimum and local maximum filtered images. The first command parameter is the input-image and the second parameter is the output-image. Defaults are: A for the input-image and B for the output-image. command : hara input-image , output-image default : hara A , B range : , (*)have : non-linear laplace like filter. The filter have performs a non-linear laplace like-like operation inspired by the 3x3 Lee- Haralick edge filter (Patt. Rec. Conf., Paris '86). Adding the have result to the original gives sharpening as in the linear laplace filter. This filter is based upon the weighted difference between the original image and the local minimum and local maximum filtered images. The first command parameter is the input-image and the second parameter is the output-image. Defaults are: A for the input-image and B for the output-image. command : have input-image , output-image default : have A , B range : , equal(ization) : histogram equalization. This operation reassigns the grey-values in an image and results in an "optimum" use of the available grey-values. The grey-value histogram of the output image is as flat as possible (given the necessary requantiza- tion). An example is given in @demo1. command : equal input-image , output-image default : equal A , B range : , thresh[olding]: transforms a grey-value image in a binary image. The binary image is obtained by thresholding the input image. After thresholding binary image operations may be applied. Pixels with a grey- value above the threshold get the binary value '1' and thus become white. Pixels with a grey-value below the threshold get the binary value '0' and become black. The default value of the threshold is obtained from the grey-value histogram with the method of Ridler & Calvert. command : thresh input-image , output-image , bitplane, threshold default : thresh A , B , 1 , automatic range : , , <1,8> , <0,255> CELLULAR LOGIC (BINARY) OPERATIONS These operations can be applied to the 8 bitplanes of an image. The bitplanes are numbered from 1 to 8. A black pixel has the value '0', a white pixel has the value '1'. The edge value of the image can be set to '0' or '1' in all operations. The default value of the image edge is black (0). The given number of iterations is a maximum. The iterations stop when no changes in the pixel values occur anymore. The number of iterations is shown in that case. erosion : erodes white objects. One layer of the white objects is peeled off in each iteration. White objects which are smaller than the number of iterations * 2 will disappear. The connectivity determines which white pixels belong to a layer to be peeled off. When the connectivity is 4 this layer consists of those white pixels that have a horizontal or vertical black neighbour. When the connectivity is 8 a layer consists of those white pixels that have a horizontal, vertical or diagonal black neighbour. When the connectivity is 6 for the odd iterations a 4-connectivity is used and for the even iterations an 8-connectivity is used. The erosion is illustrated in @demo6. command : erosion #iterations , bitplane, connectivity, edge ,image default : erosion 1 , 1 , 6 , 0 , B range : <1,512> , <1,8> , <4,6,8> , <0,1>, dilation : extends white objects. One layer is added to the white objects in each iteration. Black parts such as holes which are smaller than the number of iterations * 2 will disappear. The connectivity determines which black pixels belong to a layer to be added. When the connectivity is 4 this layer consists of those white pixels that have a horizontal or vertical white neighbour. When the connectivity is 8 a layer consists of those black pixels that have a horizontal, vertical or diagonal white neighbour. When the connectivity is 6 for the odd iterations a 4-connectivity is used and for the even iterations an 8-connectivity is used. command : dilation #iterations, bitplane, connectivity, edge, image default : dilation 1 , 1 , 6 , 0 , B range : <1,512> , <1,8> , <4,6,8> ,<0,1>, propag[ation]: dilates a bitplane under a mask. The propagation strongly resembles the dilation. However, the black pixels are only added when they are white (1) in the mask bitplane. The propagation can be used to find the original shapes of objects which remained after a number of erosion iterations. This application is also shown in @demo6. The first parameter is the number of iterations. The second parameter is the bitplane of which the dilation takes place (seed bitplane). The third parameter is the mask bitplane. The other parameters are again the connectivity and the image edge value. When the edge value is 0 only the seed bitplane is propagated. When the edge value is 1 only the edge is propagated and when the edge value is 2 both the edge and the seed bitplane are propagated. command : propag #iterations,bitplane,maskbitplane,connectiv, edge,image default : propag 1 , 1 , 2 , 6 , 0 , A range : <1,512> , <1,8> , <1,8> , <4,6,8> ,<0,2>, skelet : skeleton with endpixels. The skeleton is an 1 pixel thick line in the middle of white objects. The skeleton operation resembles the erosion, but in this case pixels of a layer are only deleted, when their deletion does not change the topology of the image. (They are not break pixels). An additional restriction is that a pixel may not be deleted at the end of a skeleton(line). The number of iterations must be sufficiently large to find the complete skeleton (the biggest diameter of the white objects divided by 2). The operation stops when the number of iterations is reached or when no pixels change anymore. An example is given in @demo3. command : skelet #iterations , bitplane, edge value, image default : skelet 100 , 1 , 0 , B range : <1,512> , <1,8> , <0,1> , -skelet : skeleton without endpixels The skeleton without endpixels is the same as the previous skeleton operation, but endpixels may be deleted in this case. Solid objects will result in single pixels and holes in objects will result in rings. This is illustrated by the skeleton of the background (exo-skeleton) in @demo4. command : -skelet #iterations , bitplane, edge value, image default : -skelet 100 , 1 , 0 , B range : <1,512> , <1,8> , <0,1> , contour : determines the contours of objects. The result is the edges of white objects. This means all white pixels with one or more black neighbours. command : contour bitplane, edge value, image default : contour 1 , 0 , B range : <1,8> , <0,1> , majority : performs a majority voting. The central pixel of a 3x3 neighbourhood becomes black or white depending upon the majority of the neighbourhood. command : majority bitplane, edge value, image default : majority 1 , 0 , B range : <1,8> , <0,1> , remove[noise]: removes pepper and salt noise. A white pixel in a complete black 3x3 neighbourhood becomes black. A black pixel in a complete white 3x3 neighbourhood becomes white. command : remove bitplane, edge value, image default : remove 1 , 0 , B range : <1,8> , <0,1> , life : game of life The well-known game of life is also a cellular logic operation ! command : life #iterations , bitplane, edge value, image default : life 1 , 1 , 0 , B range : <1,512> , <1,8> , <0,1> , SPECIAL LINEFIGURE PIXELS sinpix[els] : determines isolated white pixels These white pixels have no white neighbour in a 3x3 neighbourhood. command : sinpix bitplane, edge value, image default : sinpix 1 , 0 , B range : <1,8> , <0,1> , endpix[els]: determines endpixels of a linefigure. These white pixels have only one white neighbour in a 3x3 neighbourhood. command : endpix bitplane, edge value, image default : endpix 1 , 0 , B range : <1,8> , <0,1> , linkpix[els]: determines white pixels with two white neighbours. These white pixels have two white neighbours in a 3x3 neighbourhood. command : linkpix bitplane, edge value, image default : linkpix 1 , 0 , B range : <1,8> , <0,1> , vertices: determines the vertices in a linefigure. These white pixels have more than two white neighbours in a 3x3 neighbourhood. command : vertices bitplane, edge value, image default : vertices 1 , 0 , B range : <1,8> , <0,1> , BIT OPERATIONS bcopy : copies a bitplane. The command parameters are the input-bitplane and the output-bitplane. command : bcopy input-bitplane,output-bitplane,input-image,output-image default : bcopy 1 , 3 , B , B range : <1,8> , <1,8> , , and : AND-function of two bitplanes. The command parameters are the input-bitplanes of which the AND- function is taken and the output-bitplane. command : and bitplane in 1 , bitplane in 2 , bitplane out, image default : and 1 , 2 , 2 , B range : <1,8> , <1,8> , <1,8> , or : OR-function of two bitplanes The command parameters are the input-bitplanes of which the OR- function is taken and the output-bitplane. command : or bitplane in 1 , bitplane in 2 , bitplane out, image default : or 1 , 2 , 2 , B range : <1,8> , <1,8> , <1,8> , exor : EXOR-function of two bitplanes The command parameters are the input-bitplanes of which the EXOR-function is taken and the output-bitplane. command : exor bitplane in 1 , bitplane in 2 , bitplane out, image default : exor 1 , 2 , 2 , B range : <1,8> , <1,8> , <1,8> , invert : inverts a bitplane The first command parameter is the bitplane. The second command parameter is the image. command : invert bitplane, image default : invert 1 , B range : <1,8> , set : sets a bitplane, so makes it white (1). The first command parameter is the bitplane. The second command parameter is the image command : set bitplane, image default : set 1 , B range : <1,8> , reset : resets a bitplane, so makes it black (0). The first command parameter is the bitplane. The second command parameter is the image. command : reset bitplane, image default : reset 1 , B range : <1,8> , label : labels connected components. This command labels the connected components within a binary image. The maximum number of labels is 255. (In low resolution the best display is obtained by: don,3 followed by bdisp.) command : input-image, output-image, input bitplane, connectivity default : B , A , 1 , 8 range : , , <1-8> , <4,6,8> UTILITIES (*)don : Automatic display on When the automatic display is on, after each operation the result is shown. An optional parameter gives the type of display in the low-resolution mode. An example is given in @democ5. 0 : display off (same as doff) 1 : When all pixels of a 2x2 neighbourhood in the original bitplane are '0' a black dot is displayed. When all pixels of a 2x2 neighbourhood in the bitplane are '1' a white dot is displayed. In all other cases a grey dot is displayed. 2 : The bitplane is sampled depending upon the GEM window size. When the first pixel of a sample region is '0' a black dot is displayed. When the first pixel is '1' a white dot is displayed. 3 : Multiple bitplane display. Bitplanes are sampled depending upon the GEM windowsize. Bitplane 1 is displayed in red, bitplane 2 in blue and bitplane 3 in green. When all three lowest bitplanes are '0', the 3 highest bitplanes are shown as grey-value. 4 : Multiple bitplane display. Bitplanes are sampled depending upon the GEM windowsize. Bitplane 8 is displayed in red, bitplane 7 is displayed in blue and bitplane 6 is displayed in green. command : don, display_type default : don, 1 range : don, < 0,4> (*)doff : Automatic display off When the automatic display is off, only an image is displayed after a gdisp or bdisp command. command : doff (*)ton : Timer on The execution time of each command is displayed when the timer is on. command : ton (*)toff : Timer off Sets timer off. command : toff gdisp : Grey-value / color display of an image. This routine displays a grey-value image as 256x256 black or white dots in high resolution. In low resolution 128 x 128 pixels of 8 grey-values are displayed. Images are always displayed with maximum contrast. When the image is a color image it is displayed in color in the low resolution mode. Parameter is the image (A to D). command : gdisp image default : gdisp A range : bdisp : Displays one of the 8 bitplanes of an image. First command parameter is the image (default A). Second parameter is the bitplane (default 1). In high resolution black or white pixels are displayed. The type of display in low resolution is determined by the (optional) don parameter. command : bdisp image,bitplane default : bdisp A , 1 range : , <1,8> hist : calculates the histogram of an image. The histogram is displayed in overlay in the appropriate image window (A to D). A threshold is calculated from the histogram to segment the image ( for the thresh command). The command parameter is the image (default A). command : hist image default : hist A range : Palette : Change the palette interactively. This option is only supported in the low-resolution mode. Preferences: Change preferences. When the image windows are sized, the aspects ratio can be preserved or not. The images can be aligned to byte boundaries or not. help : gives help information. command : help command APPENDIX : File header structure /* call the headerfile *.hd, this file contains the structure with all parameters of the corresponding image file *.im. */ typedef struct { short *address; /* image_address in memory */ short format; /* format */ short sizex; /* dimension 1 */ short sizey; /* dimension 2 */ short sizez; /* dimension 3 */ unsigned short commsz; /* size of comment in bytes */ short data[16]; /* user image dependent data*/ } HEADER; #define F_WORDS 0 /* format words in the image */ #define F_BYTES 1 /* format bytes in the image */ #define F_FOBIT 2 /* four bits image, packed in 4 pix/word */ #define F_TWBIT 3 /* two bits image, packed in 8 pix/word */ #define F_SBITS 4 /* format single bits in the image */ ACKNOWLEDGEMENT The following people contributed to AIM: Frans Groen (TUD) : image processing. Robert de Vries (TUD) : GEM interface. Igor Weber (University of Zagreb, YU) : low-resolution and colour display. Gert van Antwerpen (CBD) : lmin, lmax, unif, label Piet Verbeek (TUD) : hara, have filter Lucas van Vliet and : erosion, dilation, propagation, Ben Verwer (TUD) skeleton Jaap Joosten (TUD) : tests and evaluation. Rijswijk, 1 July 1987. Please send remarks and comments to : Frans Groen Applied Physics Department Delft University of Technology Lorentzweg 1 2628 CJ Delft The Netherlands tel (31) 15-781416 * Abindon Cross benchmark ( prof. Kendall Preston ) * implementation in AIM by Frans Groen * * display is put off to obtain the operation times * separated from the display times * bench mark time = (a) + (b) + (c) + (d) * dof * display of ton * timer on readf ACROS.IM,A * read image gdisp * display unif A,B,31 * uniform filter (a) gdisp B * display result thresh B,B,1,147 * threshold (b) bdisp B,1 * display skelet 100,1,0,B * skeleton (c) bdisp B,1 * display (d) don * display on &D{nގyxDxoWpHzvtv`hz=TLMCt[TѡPjcvhqpQnhr`|~[Ѐ~fQLM}dxkm\{s\hk|xoi~wmf{iw.h`grqJv6voocf`xMm>|p\{aycoZadXHk{dTKdtv|oK×UfVwL~P_sDmUzORIx|_whVqbsidbpmW~bhxrxɄ[Powlm~WGsfxhwYTp7YyńHmg}dvnHLEtt9[\d4n3ciekxnmjZhUf0`dyti|lYh}H cvcbAhhHnslpfThuhh`~oStveTŵ{qseJ{m~pblHuN|~|dYxwt\^mo,a}s|nzfFlpe\hqdVbtdgdxxv}lxvomPIladxsTt`]a~kjaGvVkf=fB1`toukpfX~Y\PxqtZjl_qe]rshjxϢag|a}uLL~sU!odC@JKt/w~M\t;xtlu~siwp}?lPSH̠}yuonolteiX|xs_{xvrdtpmdpd`xLS;kssF[\TPml`mgdohidW%T`Dxh^BrLtrpho^|7i_st`fxѴ{s{t|gJdf}Sst\k{frPT`|axlqb}j@tqsh0Nitd`||]fOuwjX\vqhƨpHWhi`t`òMpthS`HQzxXMtlclI]h}qUcTcpn8<|U`By^o^RxtOcn;{\4bvQpctZ~ivt^JvzwQK]QʓTnxzIk|T6۶~6jpGOkdQwOz9bc]uptvV}|_vPh=B{||py>F_8|{hDthx\TqX]CQYTtpDxKMjl,v`pq[PHds~Uh}cVpo[zxXbl``\SxdzG`PANtL|\xbOluMG]\D>hr[Wvvhco\_uton`fgja6k~rhohDY|kgqCqzYőםktRlltygGf|atoz{wtX~|`RlnCMkm~|n@MPPv`ttrT\hPkTpw|v8LiXRqj^tyoUxxkfglc$Rf~B^Xnb}|dzĀHjtbfhqoxuyẍ́^z@li[jn@Ih{DH"xloj7T^ce_$[X]kZ{v`z^gtnXb`hI|{dms^|`T]Lt~bK?onWm}L/[no{eR\pj\}tF_fk]ŭP}ww[xj^uLc]@L|_WhdtSp`xdwqq|p^:`O`ntluird~`}p}^Fq|tBlPl>hm\ou^nYn~qAf[js|`xVqwauxe[`tzzebn|ia^jedavRbsGquqzrpDvV]xQMsU;sA{fpduoŘʺl\|xsTs~@}ftl|ymxg_}et{t8ecp?|Yfh>}`ewȜc\Qg_yjh{r}MzexFvDi>\w\ycnbihycpWrbddQl]\t̓dQ@yVvp]_`|PJqHjdopdstŧydzdpu^sP{{jUF1pWl|SqQS`r[@m{kTpxtPoojdg}àZ{`o|]8_zyҖx\~z\tmottgvvyvhd`wupIyvvyr}7gRLiͧx\I8\i@evg_luLhtZK`p<_|zpX}iyNp\x{xhhkg|{~I|kxleLl>Z}d\~u`pwqo`xz|w|Y^exV}xi@NbhfPsaYmVu[idRo4Hp7kwwxyJxAtydWglIsi{Wdn{ӰERZUqt ʄd[ktfX`a_Ͱw`F{[hxXl}Wbm\hL`^/epi8vDoe~Tb[άboCshLqmh^o|g`fudHwajTH`ja-kOQVzl{Kb~Zyfzhnpdb[t}PRha[}Dsrdq_mlgpDknp~ao|`Zb~N|Xkh@ydyBOsgxd}d^YPc|ilFhcqzxnp}o4fvzrS|}Ȳmȗ~AnE,X@t|Zpwx`ziopdqpP`wԄP7`^{ps{fyn[RFZsduOg19}|LTtD|](PntDKExq{LL{l`bwìrJhU[OHhuEswXd_wnwc|x^kyd4tHqzowloa\yM|nh}smlrPLvP{ThhUqP@}gqz~Txx)5tX|{o@ɧhsXsk\lQfhY_wx]VYZQvdyH)}ftpuxtdoj›kftzB3bXn`{>p`_zjdx[Ulpu]iXxz̄y^jShcdu͈s{fpnqоԙp̔ݵHMxĵwWQm^{~z)u/p|`vx:2iv_@tjhїnw{8qx1f}jfrfzrW;zrxxthzWSrllnU[ּ~zy{=XLictqymTX|dq͍x}nKhtvan}>pfut>qup]iM+oWgu\rhs{qNT@=Yt}QsAcrqkqpQ|}|[mUnliTCvtdq{\D0|s{\ctvZssƐ?NulvɄs^y|d|s;Xdqd܋|vyo|uTۏ\]xndq{f]h~zfltlp^q}}TQS|}Qdt`G^o`P|SdLrÝtU̮bt\tquwV@lPsPPz}{:wZl\d>ddttp\Ey|yqlt@XBh_~|HXdwQk`h`~slw^Ȇ}fmlNeYGmUl^R}|0K}|`Ԕ}uvxúl~hyTxm@qxX|Prk[ʢsqXbd\}f`wLtqPtvS^}pimoSozptXkyLo||\x@äTx4lzxzx昁rNc|rot_lilu`|ͱRtWrXFmP`g&mDPYZpr}|gl{vL`wrM]ĚʼbӜw6`plPİttphLxbtiT_oTnlD~hrvkj}ItAx|HZi`VgxpӠi\y}]`fnd\nupSȞq\teScOj~pdDžwjslx|XrR|\|Iqvk4GvJ|p]|u{U]wwEp:T|el}Ûdzd}hj}Dw~y``wsŃjyxs,f}}Z=cqSV\hdsodDe?`ioZcyhfwpun~;pz_t`ET_~HXxVpH<^XcWjU_f|̜Iltb[8k}LmlXveSjdzt|޶lyitasPpYpqq]^Agmrx[|]XUhZ{|de@>RnPie|eDa`tOaddțDŽͺ¹:̔LqPgbpG[pl|l|rhzÄwo||A`rtfX~l|cnhv5_[XyeZxtsw=`sb\hxXpxzX_4Eyetpmsbrqjkc\yf8z`eplyzŘomhk\wSxpk|}o:ZHnTmxzŽd˜{qj\קrnDc|nngLtP[RA|xxV{l~o,DcF[LreZuzigxkc{|hrX~vdC`woW|JtvbgY_vrKyfEp^mWsENmar`W|YcrypprhPiv}Vbtxn|Y|ukYth^r8xx\IyVhpQ^yA|andcaRE<^jp~;nvl{P|xa8tuxWCzVyoBȨ`xu]aZctlvCgfX`mb}q~QGCy\T}la}e>/JuFvdjWHR^qyHz[l\tHt}}xXG`zzȉ}wcY|;°ȇÝWؾЍӊ~xsc`|JqwhmhkXetms[a{jmnўJ|SuMitrPPUl^~rDvtzRaT|rLs~x1]ttZCCMq<@LhknL|@p_|Dkgᤀp[:t̡Ve[}|d~x=Z}dvVxhO]xhx|oUKfkۣ̬xiqΐĕut~z{\U_phdY}XamlRca[|XxYLkDÄypSttj}sO{XtvhEheg6zQ']8{j8[|ql`hxp|dEm]}hG[Uk͎`fԈlyueIb`oqXmXTpY{xj@tvhwQqqlT|igulhXv*rl+hr_ٜSnQLǙ췗\iqNlATe[weku@dh@]|vasyhljHl\fzxLgptoX]bƋ^g^}dnfZztlde%|jmvtrX\tkN|znPfzrSpz|}y]tt{u(u\5ljPOt}XtĐ|dx|j|ŤӱՙԇyOi*iPP[xcoIXLSKxLzFzor:͆z||XmqhtՀ{ev}cruJtypVyqzvrV|jdSl}kàOX`pdl`xtwP9qYGz[|lzTUguzcE`XYoyTd^dAfvKqjiw11sPHl>xdlS0|{qİYbtmzkԨd|ZlTG~qtsxtxWhV|D]wL_p>eiYbPXxjwfv[jWx[;quU|vfeldvx}^}[doXztomgla7U\zshk|vO~_Qe?_vMqq}V`{@hUeVpS|l8xPlzlryIp¸qj\}`unf{}|kvOuil}}/D{ZweTrGQrp}{XCr|ptXNyR}lHŬ\Noh^xmXdxdSVt\v?ws~Wl~e\^iIc|plrt_byradH\{l{jep][pxXad?`Do}ŠbҞڏnHVDpa{gpsxph}TnQEuGa~i\|4^h|tFIzs)Z|hpXtpoxcd`zlpX|iixKhs;iwqw?kVd^qa|`hlyƄHpGlxvhYtsY[He_otxYcP`vq7n|dezus~v]Ӏɥdxΰgξ̌qnwnilbPxxIsƌom}pi`hx|Pta*p}~yrVu-|eXZg;uyqIlX||LqĀVcuXyxlXsEz;sc`xxqoptėIR`onUhŨa[iCveXnD|kj[nHqxuroqƐtgVU`Èvrdtwn`hX^asat{d}e6`p\RnļuqnxnouihyeXtp\}t{s̱ؐirĬǧj^cīoih}Ts]ɒXxmĤfkxRvwXZfx|[tXqPruD|btp_8D}?4JnxdlwNbS=|Ll{BMnxupuz1Ag[XtJoHpilSnfx[Ft_lwqȀgtK\LSQe_gXutzI{{]|lb̦¥|̠ͅŎ|x|vlQvgcnLGbgi]rhD-uuU`6[`U^.{eyt`cqc̖dz|lxeTnp4zdux\mkUG`lt@hȂhfv}dSP҂s[qml\}Xl7bj{g|ŮRjl_vVgʐik?b`kg`}hTx{\fŒϯ|`ysԧ~xMĤrt_[`uYn|j|lw{K}fDm~svcflegרHŦy}SzUeap@|`typ9z]beyos\mpa`Y`h|Mra}fS|tr`pgyMl`k\~hniQJeifm〟ؿנģǸ̥mx^EuLؾgll|M.P~o}Tk~eyZo9DzvfHyHpvlLstgXhbR[Svp\Rsit$gtpx\qK~N^tk}W\~Q|awdoQ[{Gi{~HfTX̌xlqu[WxD҆Alx]^plmOdUxamip{tpdOt]TdjEĢ́t|xmRfhUqyxOw\xrtRN}wl;tjlX@?|zukee"[7LWd`^hZWq~Vpr\dx`Hg|_nm}\H|~}%GdibjUlSml|jӧb謋o{q_WdiT|'wLmLHCvj_toXpԃXpR@lx{>ni\usxd`|o]r{pk}jw_Z@|NbkcBtCLyTwht}nG`IkoYjmYxaWlsC}wp@ujx?kG5NogIast{xehjvvf[{|VjèTy޽d_̼pCjeH=lLmUJc[bpnhmiə|XvG^Oxnjj|pq~rT_lw_`|wLG{wRfyiTux`d1ynx@xe]bpkcqvuLeRzzs=Rtz{mbPf_{ZXEhZt5xcsjktteZ||b>Vaxćl˔nw|Ţ}|Xe`WPȬRpwnugefLy`^TnyRTxWdMvk|sbh]{LuyLoR|lk|idUupAxcOzqoJjoswdM^\rtH]zj_ỳ]leluorxذmɘtmvl{ht[`p~8U]`xTf]fkc`LbOlc#l5iq\bEGJr}xWtr\n|ylmztnD`bx9yt|yKu`lpwoiz?Z[1f|brpbstpp`Y`hAhW\W̐e8hm|dtp@i`c||Ъ`Ȕyɪu{T᭽ggmetTPx\`lb`tpl/NtCKckFQitzlY^h]{Kpt^TfZpkFz{m@nrtdzdmpJXLj7p|zXBXyp|d;qXZevmYƤIhMxLjpH]Oll7xoU{j>ƭޓsZIwypwTO}|mnlSyޅnxxf֒ʜ˸âfjx`NpG]`]d_pagY`sjHftsgRp\R~v@LPsldyk]xzlYWːuĦ\epVhpi_~Črxk4`}ȔL|klxkXSqTD?RdT|ֈnK|vc~vfk~d^ibwuhgtWnlfjЕzǛװ~`xxdȉĩĴzԻ|w޵ȵִӪ䨨ϣ̸jȏ<Ц|rఫsk͑tLÔМǪpxІxM[`fvv~n`}x`jjRZOz؄|`LpQpkDrQk`t]KЭwׯzuoLshΣ[b郲vÕ{u܄Љ븸̰ƴƣ䙘ձ䏌hxNj⦁ˌ}{sǐ|ّޭytӈSězydQjhvġHv}`ᏘvJWJe`}OXhlncLcZ@hןy\p‘ptYUqs~foô|l{槤ܺϰȜνߘ}̥ੌ㕀İpӠxg蠞SxfऐȚM|]:SldjkI-]rWh\\_rurkuywdDAWgrm5sxrjI|dzyFgvscK^zeH||wt҈|w٠qΐך׳yĒx|ƾ̽؜լ·Ȝp}zxw˜Є~IUxw\ȁĄ~kpcĈap}WpȊUtzTjTvuqzrlclmbHgxiV^Ÿgt]y{`jxT_x|py|Nz~vjYXeiguv_XljR`h`pmy>x[sVV𠉩xnl}aұdbLt{X~vFsnDz[RJjn{vh[D^ėsyU\W]vsseFXXq|^jxD]pMnd|j*ldWVdYh`hozut`QSg}qaBnjv^}{Bu^vntxpćo]tx@{qXdY^rhyHPy~dfmWҩbvw]toU~|ҷČx֊­qeoP\xOuJzV`h~_X{zXjtTYNOkltҋdt\p|X{dyX`M\P~xhv`_H͈Ze[hpzk|z\@wrlqSTxlvx|lnmuPkrondedYvt`x`<]TAk`lgvIxlpzaZTbXnjƋڠĻxxΠop~~l`dqpDJ`liwRlqsubpqE|\n^|lcxՓx|̈́Ԭа~t>|ZdgRPdsxdnjR͹Kw`/hxĖ’xpVT_\pw_eitl~SYrOhy~asXpQa`}leuEwETcamlsqjԫXjg_{A}fzL'amguql|nm|py`jgr@[ctDCyzpqu\a[pƏ`u|ɜhfbsxYp`_txusy`dW^^Da\ZXXzF΄qrx~Fwx\RujjInXx8h~xjazM^zyQÏ|qesUjIPvw}hg|cXp`{g{_tLeywRvTlrvPvfi1Qu0ɝtHNؔjtoԯCphhMxIuY^wsqt~Q{huEu||RSCyPuToWohV8Vp@Xē4Mrz]opXb9oUurỎPlgtghnb^py|XD{OpoefVor^kLpm`xydn}\rdso\MXjexhP~~PDd^HYtggxrȬĴq{pȥoΤθ{VgUBt``uyt|oUqQwmca8nudbe5oCu\!QΏ`uGzy{YmTh~j~j8{wzIhyX:cxJXurbjlW\djpcQyf`~ItlpK`hhuTm@9ogVP{gwszxCLrOoou[s`|]twYX̿}Ȳ~thwx]~r^BhetUcmatwmkSmm7\wΗ̂|d\O}LaXdp}xi}{olviK\kȬjqSDBe@fT>xvp}aymoiZwisNGQ`ek}xn~I]gh9lk[sk^:@Q}Jilx|xl_Cigpkb|0zk3qdfj|yXUčs`mX̗|swmءg֯TaĴcWpto~@l|lxh`l\NLtiqNth{:v[mx{zpAZyˆYaUfFunrudexb}_zlplxr\W`fF|GV|MMv{ye˦zh[z,t\Op}oTH(|ljuVlk_L]egsڶuqd͕Vf^{YxjXM}Sbpjr\hxlvtT[x>w`cGts\HV\m|kQxkfx?k\Llbt|]rPnpc`NfUz=tuV~qtd>Qcd~iT\zpgp~w`ZnbuٰkvzaxuxÁ|`ƞhgJotd`@Xrntt鱫Хv{gvŹ{t]~GmmQqs`pbRyhTXXh_nvklaoqQLQlKxQtp2Kdt>VZtwc{r^dP|uWhnb}d~|usx@nf\iytdpzo]cmygmx‘p>wuhvhYi`_a[r=_jo|jw\mjDPttI_qbpwMzp}Rzw|nHQx\Y;Zxǖ|>`|Hx`?`|udJy_oz{Ixd|tWhǃTIdUOAoye7rxyuGU\g|^WTgM~}|B@pYwwV{kI|Q<`v`GmhpC;~@j`ȐĈvӔ̔\Л|l/r}ZpГstxx^LzOluu^tiȃdwp9vahlbyv]rs|XP]P<|ot=~+mHix|yf|txaTspo}rTxrkj_ht|TlTA|`tpuduo?\z~Mq[r0l|`m}FjIx:xHdUē{=PTh~t^ٛdUh~ul{zd[ehrlzxm|t~eSjrRb]lxl{dg|jpxqel|{LbpǤ}`^vB̯dyӻY~ncOmzp|JktusZ7uxxhS|lOj+\juPpeux{hprtVtbp~kvs_]\|TȐ}k\gjv|ȰlgzjazjnhȤTg~[ZqupMx_ȄxZkqr\\@cUP=cu`sj]aTh>j?bق~Ŕ~apg6h~winhxKtuT\qhXe]}[xYVwu\ulP{ic}TmlhvzXvE|xaf_yJtyT`ugXqsbpxQex?vyfT_YigBhpsJpp3\]nIhyttPut`Vup9[_~^{`nnpĀ|wvİxS`s]`l>Hi``qlȥ]p>uJct~nwwNYՏlP|qiw_{shq`YpytsWm{^mP|ȈT{F|~4zrikSLLxtKoQz1|xo|hnnwtoqzWmlm~lzӺ8rw~pYId}Klbn}XZclJoKutxflh^3b\w``5QjTRHwp}St٤dc|ߤܚxw5gQg΀ua`lBdclpm_DmuZtsȨ\pq}`|tpJtju={dN~lZr~*d~Hdhirxof5p}OpddhgFP|xqRhZ]}dOupPHBpSChdu~tip8vmi{h̡yyĹgsdihWxv3int_dp$[ca_lhU\txRps}4HfqoXRm_Rtdzth`kl_6z6]lHzDu`eni~apqtdojXyblHyk`]R|}tyq}UuddWqzi}߀l`vmaXapg|rZsVHgvt|hАxt|,lppktlʨmoȍΫeL^xslRqhz|em{UP_[xxi_tiLt>`|TnzpLb|nW\wob^}kq|o]hIfljbhsTRX{ImnHpdemxcfowHHEpC}oT]vujjywkh|`R~LV~y]tU``Xrpb]Ԍn]͑Ԉǡ̀s㗈z\{k$tPlpuyfITap|fLpqb~}zL(\caud_rP|y5spr|tNFXm|vydbjutd|E<ΤhZnŜ|t}bZ\]cu{`UG[d{}{~|hE`tXqRn|5$jtpCrlepad|aƅћzĠՂښ?jzp@9jtI[ukzgUlǒf|TlPPVTIoqlnhOVpm1`|x1A[fYdq>{|\^NtOok`XDppQFbymÔbj~hxPpCQ{uyxb,lvxyrib6\_tyoc?xq[yj^`Td`U|ȱĨ•pP~b\z|t[vsph{HfŅ4bCR>ւO~mgxv`xxbhnsm=u}lf_`U|\i~\{k}pas|axy]uohsxi\Pitv`VW^wwvgmxnqy^wXp}1`wl;uvd}y[Դ˗ȴFlئsaprlDPuvpcDW{zfa`#7Tbhl|CVTKy}|sd`kt^T[huW}vipr7e͏QlxV:|nƦssi|nX^v|aqjxllpTXxv@z\YdSZhh|czp[pcfgV|rhydorwh}Xnă|ks˜~\Ƙ>va&^M~hvtTnlxo|RyuNRRrpkL}\ppd2pƈ<}{k|zYml\TTxgdmgBzn(Ude`h|[x~xazt{)t_YKLXpE{xxxvqhvzhxUR^vxNnM`IfNla[dapїğpşlĪ}z{n`0~`hndd$Yzqn`m}lGaxS`W]uuLaUw@@L2tDIremb`uvuQc\)JtXewpGD{S;tSIT;xy`katjw[xlbsxthyP}|kQrleF|ZtTyqf~}`vhz~|d}zQHۦxqxSɗJ^sZP@EszTq\Hqc:ieibMit`uiuqoso`auUhi`lHuL`1^Мnftlmtera]aT;~l\zd][z]TwȍdLtXygu|mqppl\zxbҠvufecPxp\s;ilgMcfTokXtHtxhwXp_osa}SWhhtxy^fcltg}zm~axsmp`sE@[mTXzv`t@aG{yj|V)Mc}uuOYo{\}PM`w@^p@f}=qe{}w{sy^[kat\_vP\mRoAlU[^yTXMϐu|\]ytz*j|jqk|ruNlrr|ykmbx҄Z`mU[oTv.p`ʃXRmtxd|wVn_jwg}EmwKkxo{t{hohh~[uqI|BF^PY}XfŨ{`p@aclkxL}|gSd`hz|K]1Tbne}w|XodQylip}xqKYt/`R]vlMvU[qsxT`GsoZLuhhuu@}Z`f{`|m\|i`}Z`U8hShrv\h|xwdwfyIJ`qyv\ax[oxdxpcrutXdtbwptTLCVqi]d\]hrHu}bxqWsvWjlcBY]Vtbtspl}WztVZ[dydqxCzrihWTVjwtix\fhbTUwlf\rC~wT,{Xx|dwkerrbqXh:ȠjxdTs`nLCy^yjm\TN|nkgow}EuTx^ÔxLta\|d=c~`bjo^nbĝbIuPKxPOXGTtox~pOst}sb`W|bŤSvgSsWDsfxrWvjrhblxDepxlLydVMtiqln`dqzs(~]|lU~ldml[hjvss{|xV|^zz`|^Wp~$fjshÓh(~x\xxppcQ{b}ttYh}xWj\{mRwtshqX\lfoD{vztkzxtwxGV[fLu]cy`c,x_ncsz;hwhYnr1\yocrolnip>wSdxh|ClyahY]ovoTXhaPx}inr\HhqhEPdpeB~v{jVyu:i{zvy0zq_w_J~~c:Tr|\H`pPm`ydvazvHwXn~pmgt|jyyWoyVhLx`iBqLApnjVqn8acqnkkuq|c`\̏xi?dPsu`qLlTdcqdEpym]v`Kl^^`ip^we`U8vet?yͪgF`h`uQt}{ulrH`t`]{LflvSUWgrtPeXgT|HxxhnxLitiPys_2xaFZŲXnMPvd_\|jxt[PfKxzykxXMWYipUsv\|oLvHxcPwcRJdl{?|ŸqtRiaDMrhv\mydjoN|ipkfzy]XLjpkus|]t`x8d`\||nj^q|xPZ\xhpiWPTVqcx[t}n{xZ;ldT+܀siБg,Qvmx5lps\xO|lfuX'}fx0rd~Nw~qm{n|hRCfhgoQHvp\SxtuíHjhVi=ind>Xw{hY|`ypw|uof{rsvhl|ZpYmapHnuJc`|dIh|ylbi*|^hEwiG68]cQ^tXfnnA_lduu(\~@L|8u_gwpyxxy_{xԊQ`7xd[U~`T{e`<:ka@}evPtrfXTbqhQf|hDpP|jeQzLdKpJ}NTg`=xZndMhX|^OHp}d}x{|Ws|ldSmt`\yx{SxRZt{htnjaFqOuUvgnUsuC_z\yxlpR}~hXhAM`С`r{˓{xa{hold[yjufab9vOthnI`HYq5L1^Jekug`XdQ|Za}rs)XP|XxPD}]LHtq|*U|XDkO=hnov}`jY~}||Xx\f`di`ZyY;[X?{llwhQ|\\au_qvkcf\?M\nqYpapeh5QWhpmw_|_H}W@@yN^xnuq]xxxɅmOihuaVSu~=sYrtnos}Thdlb}dtfTx`tK^ycvk~UxKYhke^`Rp|N]sydi\{|iiYy`IIn`plz~@\[du}ypU|u]PTyo~qlMlBalTUrfodw@bTgLnkyxXxq^pMapf\~P|zh\Xqfc~}P`lgpWȐ{mygr=h^Sprql9Vuxxpb|:GLihx0Voqh\YfcoM|`{pd]sc΃5dJRIYpXyklyok\LxCXhwWt?^m|tucxt}xglyvc|penvpL|UTpums}ptE]qzn}\tnzb|hKckrlCop{XxQ}HU`}KNvye0Xbg~oz|{fR^ddHqgXlfxegpf|tb4qs\OvvXx^tn=dKiPl3`grvdvkjl}VSawUtlfu{leV`Lkrimage A:\SCHEMA.IM macro A:\DEMSHA.AIM help E:\HELP\-SKELET.HLP log E:\DEMO\LOG1.AIM aspect 1 align 1 356 18 282 380 4 18 282 300 46 54 282 300 72 86 282 300 120 126 282 300 `B"o#վ*i,EB&J(JSB  g  g  f RSBj` gn =fa6 n <#` %fa n <#`Rpr A9nA0m/ПЁRSBkB`Jg:NuAՊ`AjrRSBk$  gJ  gB  g:Qp`JBkQB$)ԩ &9f &`nր n&< Ѓй// Bg?<JNAJfV.B#ժ#ծ#ղ#ն#պN"/ / KUj,MNpJg / yNXO??<LNA` /`NVaa HydNX oV n /(/9*N&PJg.HyNX n /(NXHyNX`/9*NXHyaXa Ra N^NuNVH p/NBX3S@fHyp/NjPBNFXHy֨N\RXp/NHX#JfHyUN*,X yT"yX$y\/ / //9p/BN&OBn0. @l6H/@ @p/// p//HNBO o 0Rn`Hy8p/NBPNʂ3HyHyHyHyN2O33Bn n l0.RnH @0`3Hy HyHyNO p//N‚PB/<N‚Pp/NX y0H2(H4(H6(H/////</NO3H"9t/A $/ v////v//NɂOJyg*Jyg"=y=y=y=y`r09U@fp`p29HNRHnHnHnHn/rd/r/r//</BNO( y=P0(2(A2.A=@=h09H2.H4.H6.H8.H/////NfO0.H2.H4.H6.HHyHyHyHy/////</x/NO(N 09J@fAe`Ar/NXJf"Hy|p/NjPa&BNFX`HHy$p//N*O 09U@fBpS//9$NǎO p//9$NPp/NBX#09U@f"333(3` 3@3333p333p//<NP# JfHyݡp/NjPBNFXLN^NuNVH-|BBy\09U@fA`A/HnNPB*n g R ` .Tr//NP-@JfHyp/NjPpL N^NuB*n g . n R ` . n / /<N‚PHnNX/.HnN!P-@ @WgJ^g& nBfHnHy/9NyO A#Bj nHHr kfN*`v?``~@`BHnNP @Rp\//-HNPJfFHy HnNPp\/HnNP-@Jg R nB/.HnN6P`/.HnNPHyHnN6P09\H l29\R3\HAn 09\H @:p//p/Hy"BHn/HNO o0Hy0HnNP-@JfH/.Hy3HnNzO Hnp/NjP09\S@3\HAn-P`Hy]p/NjP`09\HJo @:0R@fp///.NO `/.NXp-@j09\S@3\HAn-P`/.NX`rp*//.NP-@Jg @BBHnNPB/./-@N:O -@Jkr NR n"h/.NX`HyއNXJjfHnNX`L N^NuNV0<=@=@=@H3bB . l @*BR`B . lp @*0.H2.H4.H/.v/////HNTDO o Jf(/.HyޘHnNzO Hnp/NjPR`N^NuNVB . l& @*Jg @*/NWXR`J^g/9NXN^Nu09H/NȶX09H/NXBNX09H/NNXN>/9 NXHyp/NBPNuNVN N BNFXN^NuNVx nJf -|p|`-n|p\//.|NPJfFHypHnNPp\/HnNP-@xJg Rx nxB/.|HnN6P`/.|HnNPHyHnN6PHnNoRXN^NuNVp//9/9 /HnN`Or//9/9(BHn-@N`Or//</<Hy/Hn-@NOr//</<HyBHn-@NOr//</<HyBHn-@NO/</<'r/HyBHn-@NOr//</<Hy/Hn-@NO". A*"."A*B//-@NO . @* ."@*/./././././/NXO . @*"Pr#A @*/NXN^NuNVp//9/9 /HnN`Or//9/9(BHn-@N`O". A*-@"@*B//NO . @* ."@*//N[4P . @*"Pr#A @*/NXN^NuNVp//9/9 /HnN`Or//9/9(BHn-@N`O/</<'r/HyBHn-@NO/</</<HyBHn-@NO". A*"."A*B//-@NO . @* ."@*/././/N_O . @*"Pr#A @*/NXN^NuNVp//9/9 /HnN`Or//9/9(BHn-@N`O/</<'r/HyBHn-@NO/</</<HyBHn-@NO". A*"."A*B//-@NO . @* ."@*/././/N]~O . @*"Pr#A @*/NXN^NuNVp//9/9 /HnN`Or//9/9(BHn-@N`Or/r?/r/HyBHn-@NO". A*"."A*B//-@NO . @* ."@*//NmP . @*/./NhP . @*"Pr#A @*/NXN^NuNVp//9/9 /HnN`Or//9/9(BHn-@N`Or/r?/r/HyBHn-@NO". A*"."A*B//-@NO . @* ."@*//NmP . @*/./NaP . @*"Pr#A @*/NXN^NuNVp//9/9 /HnN`Or//9/9(BHn-@N`Or/r?/r/Hy&BHn-@NO". A*"."A*B//-@NO . @* ."@*//NmP . @*/./NdP . @*"Pr#A @*/NXN^NuNVHnHyDHy.BHnNOr\//-@NPJfFHyDHntNPp\/HntNP-@Jg R nB/.HntN6P`/.HntNPp//9/9@/HnN`O-@ @*"@*B//NO p./HntNP-@Jf&Hy:HntN6Pp./HntNP-@pR/Hy>/.-@NO Jgp/HyB/.NO JfBp/HyF/.NO Jgp/HyJ/.NO Jfp-@p/HyN/.NO Jgp/HyR/.NO Jfp-@ . dN``R`(`v . @*BHnt/NO -@`p . @*p/Hnt/N\O -@`H . @*p/Hnt/NO -@` . @*Hnt/N&P-@JgX fHntHyVHnNzO `HntHyjHnNzO HnNXp//N‚P`( . @*"Pr#A @*/NXN^NuNVp//9/9@/HnN`O-@ @*"@*B//NO HnHyߒHy߆BHnNOr\//-@NPJfFHyDHntNPp\/HntNP-@Jg R nB/.HntN6P`/.HntNPp./HntNP-@Jfl . @*"P fHyߘHntN6P . @*"P fHyߜHntN6Pp./HntNP-@pR/Hyߡ/.-@NO Jgp/Hyߥ/.NO JfBp/Hyߩ/.NO Jgp/Hy߭/.NO Jfp-@p/Hy߱/.NO Jgp/Hyߵ/.NO Jfp-@ . dN``R`(`v . @*BHnt/NO -@`p . @*p/Hnt/NO -@`H . @*p/Hnt/NO -@` . @*Hnt/NjP-@JgH fHntHy߹HnNzO `HntHyHnNzO HnNXJZgNlp//N‚PN^NuNVHnHyDHyBHnNOr\//-@NPJfFHyDHntNPp\/HntNP-@Jg R nB/.HntN6P`/.HntNPp//9/9@/HnN`O-@ @*"@*B//NO p./HntNP-@Jf&HyHntN6Pp./HntNP-@pR/Hy/.-@NO Jgp/Hy/.NO JfBp/Hy/.NO Jgp/Hy/.NO Jfp-@ . g g^Jf09J@f( . @*BHnt/NvO -@` . @*BHnt/NO -@`z09J@f( . @*p/Hnt/NvO -@`H . @*p/Hnt/NO -@` . @*Hnt/N&P-@JgX fHntHy HnNzO `HntHyHnNzO HnNXp//N‚P`( . @*"Pr#A @*/NXN^NuNV09XH3Xr//9/9@/Hn-@N`O-@ @*"Pr#A @*"@*B//NO . @*/NX .3XN^NuNV09XH-@Jf3Xp//9/9@/HnN`O-@ @*"Pp/p/p/Hy:BHn/INOS o!@ . @*"@*B//NO . @*/NX .3XN^NuNVp//9/9 /HnN`Or//9/9(BHn-@N`O". A*/-@NPlX/-@NRX3b/.NXjXp/p/p/HyKBHnNO29bH//<t/HyW/Hn=@NOSn". A*"P4.H#B$. B*"A*B//=@NO . @* ."@*0.H2.H////NSO . @*/NXN^NuNVp//9/9@/HnN`O-@ @*"@*B//NO . @*/NPlX". A*//-@NP/.NRX3bH/HydHnNzO HnNX/.NXjXp//N‚PJZgNlN^NuNVH0p//<p/Hyv/HnNO3p/p/p/HyBHnNO3p/p/p/HyBHnNO3p/p/p/Hy/HnNO3p//9/9@BHnN`O29HStd-@ @*"P#A @*"@*B//NO . @*"Pr9d49H69H89H @*$P @*&P/+/*/////NO#t09H"9tl"/HyHnNzO HnNX . @*/NXL N^NuNVH0p//<p/Hy/HnNO3p/p/p/HyBHnNO3p/p/p/HyBHnNO3p/p/p/Hy/HnNO3p//9/9@BHnN`O29HStd-@ @*"P#A @*"@*B//NO . @*"Pr9d49H69H89H @*$P @*&P/+/*/////N$O#t09H"9tl"/HyHnNzO HnNX . @*/NXL N^NuNVH 0p//<p/HyH/HnNO3p/p/p/Hy^BHnNO3p/p/p/HylBHnNO3p/p/p/Hy{BHnNO3p/p/p/Hy/HnNO3p//9/9@BHnN`O29HStd49HSve-@ @*"P#A @*"@*B//NO . @*"Pr9dt9e69H89H:9H @*$P @*&P/+/*//////N^O #t09H"9tl"/HyHnNzO HnNX . @*/NXL 0N^NuNVHpd//<p/Hy/HnNO3p/p/p/HyBHnNO3p/p/p/Hy/HnNO3p//9/9@BHnN`O29H/AStd"/t"/Rv-@ @*"P") @*"P )=AH=@ rNR2.HNR/BCNHX2.H-@ rNR2.HNR/NHX-@JgJf pLN^Nu . @*"P29HS#A @*"@*B//NO . @*"P0.H2.Ht.v./././////NO . @*"Pp9dr.t.69H89H:.H<.H////~/////NO$#t09H"9tl"/HyHnNzO HnNX . @*"P0.H2.Ht.v./././////NO/.NX/.NX . @*/NXLN^NuNVHpd//<p/Hy/HnNO3p/p/p/Hy1BHnNO3p/p/p/Hy?/HnNO3p//9/9@BHnN`O29H/A Std"/ t"/ Rv-@ @*"P") @*"P )=AH=@ rNR2.HNR/BCNHX2.H-@ rNR2.HNR/NHX-@JgJf pLpN^Nu . @*"P29HS#A @*"@*B//NO . @*"P0.H2.Ht.v./././////NO . @*"Pp9dr.t.69H89H:.H<.H////B////NO$#t09H"9tl"/HyMHnNzO HnNX . @*"P0.H2.Ht.v./././////NO/.NX/.NX . @*/NXLpN^NuNVp/p/p/HyvBHnNO3p/p/p/Hy/HnNO3p//9/9@BHnN`O29HStd-@ @*"P#A @*"@*B//NO . @*p9d29HHydHypt//B//t//N.<.:.8." H//.adP HrN/@ S"HNR n*H(n / =@SnJnk R H` H=GSnJnk R H` H H=@SnJnk R H`(n =FSnJnkpR nR`B.*nRJfR.`&n H n *H(n S@=@SnJnkd."Hr nSr nRbA`&.fp. n$HRJfR.`RR`L.<.:.8." H//.aP HrN/@ S"HNR n*H(n / =@SnJnk R H` H=GSnJnk R H` H H=@SnJnk R H`(n =FSnJnkpR nR` HS@ n*HSJfS.`&n H n *H(n S@=@SnJnkd."Hr nSr nReA`&.fp. n$HSJfS.`RR`L.<.:. H/aX"H=@ rN/@S"HNR n*H(n (/SDJDk R H` H(SDJDk R H` H H(SDJDk R H` H(n (=@SDJDkp0.rRЁ=@`&n H n *H(n S@(SDJDk>p0.r2./@ HpR"/=ApRҀ=A`p0.r2.L8N^NuNV n ("(-@-Ao .SR". opN^Nu . SgpN^Nu .n .Ю R/NHX-@JfpN^NuB . nlBn .".NR".NR"n Q-H0.RnHg&p//. /././.aO .Ѯ`Bn .".NR".NR"n Q-H0.RnH".g nR//. /././a O`R`2/.NXpN^NuNVH>.<.:. H/@ <"/N=@ /rN/@S"HNR n*H(n (/SDJDk R H` H(SDJDk R H` H H(SDJDk R H` H(n (=@SDJDkp0.rRЁ=@`&n H n *H(n S@(SDJDkDp0.r2./@NR HpR"/=ApRҀ=A`0.L8N^NuNVH>. | GgR` LN^NuNVH n*P n (P~ n d RRR`L0N^NuNVH n*P n (P~ n dR RR`L0N^NuNVH n*P n (P n&P~ n d @RARHHЁRR`L8N^NuNVH n*P n (P n&P~ n d2@RARAn,JFj| Fo<< RR`L8N^NuNVH n*P n (P n&P~ n dpRrRNRRR`L8N^NuNVH n*P n (P n&P~ n d*JgpRrRNR`RRRR`L8N^NuNVH n*P n (P~ n d*pR2.HЁ,JFj| Fo<< RR`L0N^NuNVH n*P n (P~ n d.pR2.HNR,JFj| Fo<< RR`L0N^NuNVH Jnf pL0N^Nu n*P n (P~ n d.pR2.HN,JFj| Fo<< RR`L0N^NuNVH n*P"n (Q/NPlXr @-h.-@-A n쾐l " n"Ӯ R`~ n쾐lH " n,"$ ".N,Jj| o,< " n R` n ("(NR~-@ྮlpR n RR`/.NXjX n f/. /NPL0N^NuNVH n*P n (P n&P~ n ddR`RRRR`L8N^NuNVH n*P n (P n&P~ n ddR`RRRR`L8N^NuNVH n*P n (P n&P~ n d`pr/@r$/-@-BJjD` ./@Jj".D`". /l RRR`RRRR`L8N^NuNVH< n ("($(=@Hv//=A=BNP2.Ht//-@-@NP2.Ht//-@-@NPB-@ . nlP$n2.H4.H NR/A ".NR"n Q-H n"P*I M / (H L&HU.Jorz0.Hl " nBR`z l: Mp nR Lp nR Kp nRR`xz0.Hl " nؐ nR`0.HS* @" n"|@A0.HWlR Mp nS Lp nS Kp nS M.dS. L.dS. K.dS. V Mp nR V Lp nR V Kp nR V M.dR. V L.dR. V K.dR.p. c$r.S/A$ n"/$@A`p. np.А b R.@` T JR`0.H/@ S J / U"J// /./.NNO 0.HѮ n-n$H-H-HS`0.H//./.NNO 0.HѮ//./.NNO 0.H2.H/@ NR".NR"n Q / -H//./-HNNO R`/.NX/.NX/.NXLB(.S Jk Jfp-@`Jf .f S`.R`@R&L .`Jg np".ڲf SS` .".NR/HnHn/./ a0O n n /.-@NX .L<|=@-@Gl "HABPRF`0.SnJ@oRp L0@ K".t L4BB Kr L2A=@HA0R@0R`z ElA8Bn S@=@-H0.SnJ@o$T n0=@Do( A=@`0.H/@Ap0 /R=@H l ABP0.^@=@H l ABP0.P@=@H l ABP0.@ =@H l ABP0.@@=@H l ABP0.@A=@H l ABP0.S@=@HJk ABP0._@=@HJk ABP0.Q@=@HJk ABP0.@ =@HJk ABP0.@@=@HJk ABP0.@A=@HJk ABP "H M2.A4.B8BB4.BBB0RE`L8N^NuNVH *n(n z,. SGJ@o| SFJ@oz SEJ@o0-?@@@(0/@@2/A$&C=A"=@ @@E D$n"n=@H=A=B=CJjD`0.H2.H/@JjD`0.H" /Ё2.H/@JjD`0.H" /Ё2.H Lr0=@=A0.SnJ@o*0.H M0?@@@(0/@@2/A$D&@=@ A=BH=@=A=CJjD`0.H$0.H/BJjD`0.H"/Ҁ0.H/AJjD`0.H"/Ҁ=AnlN=n=n=n0.H L0=A`$L0N^NuNVH *n(n Bn0. @lHBv M=Rn`=|0. @l@=@J@j=|0.H L0?@@@*0/@@(0/@><Bn=@0. @lH26JAf26AA46BB66C H=AH=B=CJjD` H2.H"H4.H’/@JjD` H2.H" /Ё2.H4.H’/@JjD`0.H2.H" /Ё,Gl.=nRn`20.H=2.H M0Rn`L0N^NuNVH<*n n ("(4.B// =@=ANvO 0.2.A4.v//-@=ANP2.Ht//-@NP2.Ht//-@NP-@Jg JgJfHyN*,X(n0.H2.H///.NO 0.H2.H///.NO =|/.NQ X2.HHnHn//-@NQO/.NXjXp=@2.@=@=A0. @lNH2.H2.HN.JGj~ Go~0.HA0A 0Rn`HnHn/.aFO Hy8HnaPHnHnaPBn0. @lH nrC0Rn`|(* n0.H/@ -H-H / r-HNR=@0.SnJ@o n0T`-n=|Bn0.ڰnl"n QH/@$"n0&H /$f=n0.SnJ@o0HT K$H HrҀ n0HҀ* =@J@jBn no=|0.HA2AA0@ HR n0T HtԀ n0HԀ( =@=AJ@jBn no=|0.HA2AnA0@ HR n0T HrҀ n0HҀ, =@J@jBn no=|0.HA2nA0@ HR n0T0.HA> g0n: g 0-n;@ g 0-n;@ g 0-n;@0.H=@J@fDP=|`8=n0.SnJ@o0.@=@J@fQ=|U0H K$H HrҀU n0HҀ* =@J@jBn no=|0.HA2AA0@ HR n0 HtԀU n0HԀ( =@=AJ@jBn no=|0.HA2AnA0@ HR n0 HrҀU n0HҀ, =@J@jBn no=|0.HA2nA0@ HR n00.HA> g0n: g 0-n;@ g 0-n;@ gH0-n;@`80.HRn`/.NX/.NX/.NXLJnf(0.H2."H$B//// NO L/NX0.HL.<...(MBn0.FlD" M(HBn0.Gl(Jg LR` LR FRn`Rn`L0N^NuNVH *n>...(M (Bn0.nlR" M(HBn0.Gl6p"f LR F` LR FRn`Rn`L0N^NuNVH<*n.(n<. @J.g..$Lz0."H g]fx0.HS"Hl  MR&H=| HS2.Hl|pr."fZp+Jg,p+Jg H KJg H KJf" REH J 09^@c pL.<.:.Jnf(MxGl LR HFr€RD` HS"HNR M(HxGl LR HFr€RD`(M Hx HS"Hl HFr€$H/BSr€ /RRD`(MxGl LRp"HRD` HS"HNR M(HxGl LRp"HRD`(M Hx HS"Hl.p"H$H/B Sp / RRD`L0N^NuNVH<.*n(n r./A$,2.H4.H/ / //,////.aXO&M=@B=|Bn-@Jng&0.Rnn&dp(=@nd .R K$Pp09^".검cBJgz*Jg0.H JRJg0.H JJg0.H JSJg*Jg0.H JSJg0.H JJg0.H JRJg  LJf F=|*f. .R K"JR p09^".沀cB`0.H JRf* .R"K"p09^".沀cfB`^0.H Jf* .R"K"p09^".沀c*B`"0.H JSf* .R"K"p09^".沀cB`*f. .R K"JS p09^".沀cB`0.H JSf& .R"K"p09^".沀cvB`p0.H Jf& .R"K"p09^".沀c>B`80.H JRf$ .R"K"p09^".沀cBRD`& .".沀e =A` .ꐮr29`=A`L...(n $nB=|0.HSr2.d: MR&Hx HS"d "tāfrt+Ā=AJg=A H KRJg H KJg H KSJg+Jg H KSJg H KJg H KRJgp0. LJf .R J p09^".cBRRD`Rn` .L.<..(n&MxGlRRRD` HS"HNR M&HxGlRRRD` H M&Hx HS"Hl*R H/@SR /RRD`L8N^NuNVH*n>.<..(n&MxGl& LRJg KR` KR FRD` HS"HNR M&HxGl& LRJg KR` KR FRD` H M&Hx HS"HlJ LRJg` F HS LRJg` F HRRD`L8N^NuNVH<.. n(P ("(NR L&H n $P*Ld&Jg JR` JR FR`L<0.nlT;|JGgB0.Rnnl40HT L.Jf0-G;@0-G;@0G: O`P><`Rn`X/.NX/.NXL8N^NuNVH<0.Hr//NP2.Ht//-@NP-@JgJfHyN*,X0.B//. NvO n (r."($(=AH6.H///.-@=Ba|O 0.H2.H///.a`O 0.@Bn=@0.nlH n02."n Q(H*n 0.HѮ $nBn<<0.nl;|JFg0.Rnnl0HT L&HzJgRE0.H KRJgREJgRE0.H KJgRE H g0Jf0-F;@0-F;@0F:`0-F;@0F: N`\P<<`@Rn`/.NX/.NXL<nl6JGg* RFnl 0HT L.Jf0G: O`T><`Rn`~/.NX/.NXL8N^NuNV n-hr/p/NBP n0(Hr////r //NɂO . g0 nK"n"R/9// Hy/NzO`* nK"n"/9/ Hy/NzO n0(HJ"t nJ$v////v//NɂON^NuNV"n i=h=h=h-Pp#@09-HJ@f fTB . l nr"@80R`0.H2.H4.H////./.aO n f(0.H2.H4.H////./NO09U@f(0.H2.H4.H////./.aO/.NDX/.aX n0(H/N)XN^NuNVH*n0.HD.|xznl<0.Hހo 0.H܀RD` H2.HmS( "H M0RE`L N^NuNVH<*n n ("(4.Hv//=@=ANP2.Ht//-@NP2.Ht//-@NP-@Jg JgJfHyN*,X0.B// NvO 0.H2.H///.aO 0.H2.H///.aO (n=|/.NPlX2.HHnHn//-@NQO/.NXjX0.2.A=@ @lBn0<=@=@Bn0. @lbH2.HrNR2.HN.JGj~ Go~0.HA0A r/HN o0Rn`0.@&n:.=@ SEJ@o6T`&n<<0.@Bn=@0.ҰnlH/@ n02."n Q$H /f:. SEJ@o0HT Jp2.H2.HЁ2HЁ=@=@J@jBn no=|0.HA>0-F;@ f 0-F;@ f 0-F;@ f0F:0.HA0n0.HR6T Nf><<P`4:. SEJ@o Ff|QU0H Jp2.H2.HЁU2HЁ=@=@J@jBn no=|0.HA>0-F;@ f 0-F;@ f 0-F;@ f0F:0.HA0n0.HR6`80.HRn`/.NX/.NX/.NXL<Bn0.nlH/@ n02."n Q(H / f\<. SFJ@o0HT Lp2.H"HЁ2HЁ*Dn0G:`D HR4T OfT><`<. SFJ@oL GfU~U0H Lp2.H"HЁU2HЁ*Dn0G:`D HR4`0.HRn`/.NX/.NX/.NXL/NHX-@JfpN^Nu </HnT-@NP-@Rfxp.//. NP-@PJgRPp/Hy/.PNO Jgp/Hy/.PNO Jfp n!@0.@2.A=@=A`t np>///.NO /.-@NzX >g/.NXpN^Nu n0(2(4(H n!B=@=A"NR-@0.H n!@0.H!@/.NX n-h09J@f2 f(0.@ n1@0.@1@H1@` n1n0.1@H1@"n i/NX"n i"n0)2)29/@/HUAfr`r /NR/NHX o "n iJfHyN*,Xp n!@!n p\//. NP-@JgR`-n n"p(//./NDO "n Q/.//.-HNO -@䰮g/.NzXpN^Nu/.NzXN^NuNV` n-h -P/. HndNPp./HndNP-@`Jg @BHyHndN6Pp>/NHX-@JfpN^Nu nBXp//. /NDO n1|"n )1@ )1@ )1@Bh </Hnd-@NP-@Rf/.NXpN^Nup>//./.N^O /.-@NzX/.NX >gpN^Nu/./. NP-@RfpN^Nu/././.N^O -@谮g/.NzXpN^Nu/.NzXN^NuNVH <//. -@NP-@Rf pLN^Nup\//. NP-@JgR`-n n"p(//./NDO =|@=|Jf -|}"`-|} n-hp!@0.H!@2.H!A/@NR n!@ 09J@f( / n1@1A0(H1@`$0. n1@1n0(H1@"n i/NX"n i"n0)2)29/@/HUAfr`r /NR/NHX o "n iJfHyN*,X/.NHX-@Jf pLN^Nu/././.NO -@g"/.NzX/.NXpLN^Nu/.NzX n-Pp!@Jf nT-H` nX-HBn0. @l8H n>"AA$&CCCC&CCCC=Rn`Jf n"-H` n-HBn0.nlBn=|0.nlJng0.Rnnlt~ n0(nJ@g n0(nJ@g n0(nJ@g n0nJ@g "H46 nR2.I=A`xP=|`^Rn`@/.NXpLN^NuNVH <//. -@NP-@Rf pLN^Nup\//. NP-@JgR`-n n"p(//./NDO =|@=| f -|}`-|}" n-hp!@0.H!@2.H!A/@NR n!@ 09J@f( / n1@1A0(H1@`$0. n1@1n0(H1@"n i/NX"n i"n0)2)29/@/HUAfr`r /NR/NHX o "n iJfHyN*,X/.NHX-@Jf pLN^Nu/././.NO -@g"/.NzX/.NXpLN^Nu/.NzX"n Q0.B//-HNvO p n!@ g n"-H` n-H0.@2.ABn=@=A0.nlBn=|0.ްnlZJngH0.Rnްnl:~0.HS n2n=@JAfH n 0.H=@`T=|`.g 0.HѮRn`l/.NXpLN^NuNV,H <//. -@NP-@Rf pLN^Nup\//. NP-@JgR`-n n"p(//./NDO =|@=|Jf -|}"`-|}"n ip#@0.H/@#@2.H/A#A$/&//@ /A"-HAL"AA0Al"$BBB0$BBB=AL4B66CCAl6CC=Rn`Jf nH"-HD` nH-HD0.@Bn=@0.ְnl6Bn=|B0.԰nlJnBg0.Rn԰nl~0.HS nD2(nB=@JAg nD0(nBJ@g nD0(nBJ@g nD0nBJ@g0.H n"$Hv86(Hք nv86(Hք nClv8Hք nCLp4HЂ0.BH=@B`PD=|B`.g0.HѮѮѮѮRn`/.HNXpLN^NuNVB f=|=|-|}"Jf=|@=|-|}" f=|@=|-|}/.NHX-@JfpN^NuB/./.NvO Jf n""nT-H-I f n0""nT-H-I f n"nX-H-I n ("(4.H/B&/=@H/@ =A"/N2.H6.H-@ "N-@=B".вoX"/NR=@Hl`0.=@JfHH”-B f80.H2.H-A` 0.H".NR=@ްnl=@ .ѮB . l n"nr0R` n f2 g(0.H2.H4.H////./NfO f*0.H2.H4.H////./.NbO n f2 g(0.H2.H4.H////./NO <//. -@NP-@Rf/.NXpN^Nu/././.N^O -@찮g/.NzX/.NXpN^Nu/.NzX/.NXN^NuNVx/.NXHn|N"PX-@Jf . N^Nu nJf . N^NuHyHn|aP @HH/Hy-@aLPJgp`pN^NuNV/.NXHnN"PX-@Jg @Jf .N^Nu nHH//. aP-@Jg N^NuNVt . ".$O-@ .N^NuNV/. /.aP @-@Jf .N^Nu/.N.X-@mo/./././.aO-@ .N^NuNV/. /.aP @-@Jf .N^NuB/./.aO -@JoN^Nu/././.aO N^NuNV/. /.a*P @-@JgN^Nu/././.aO N^NuNV"n Q-H-HJ f-| nJgB-n nJg,"nRf(BR n .N^NuR` n .N^NuNV n -Ppr-A-@ . n "P-Ig,/./ aJPJg f-n`p-@R`Jk .N^NuJg /. aNX .N^NuNV nJfpN^Nu n R nRf n JfpN^NupN^NuNV09HU29HN2949H=@Ht=|=@=A=B=B0.H n"P-Ig/ NLX/.=@NXRn0.nm\p /NXRnp=@Jnf0.noRn0.nf@Hy!NXNzp /NX=|`0.H @ /NXRn`@Hy+NXN^NuNV-n nJg@-n nHHJg"nHHgR` nJf .N^NuR` .N^NuNVHy-/.aPHn/-@NJP .N^NuNV n-H nJg.f N^NuR`pN^NuNVB n S (Jk "PRp` /. NBX-@ g g nR` nB .N^NuNVbH<"n i=h|=hz=hx-Pj )")=@S@=ASA4.UB=i-i.v-C6.H=@=A=B-Hn g]g ng pL "H n(24.AJBg$"H LR2.nf=E=ERE`l0.nlJfR0.HS n2H n4.H"M-I"n0HR//./-@-HNNO n-n(H-H-H0.no=@`=n0.no=@0.HS n0.R@0=n=n0.nl=@`=n0.nl=@0.HS n0.S@0=n=nRn`0.H2.Hl2.H nS0`0.H n0.S@00.H2.Ho2.H nR0`0.H n0.R@00.nlJf$ n"M0.H// /-H-INNO BfAr/Hnt////p////////////////p!/NO\=@vg0.t@ @fp-@f n vgJfg09XJ@gx09J@f,0.|H2.zH4.xH////.j/.NxO`*0.|H2.zH4.xH////.j/.N|O n0(HHn~/N'PJfgHyGp/NjPSgR`/.NX/.NX n$ p//N‚P .LHn/. arPJg.092. @fHnNrX`0. HHn/aP0. HHnHnHnHnr //N&O`xB/<N‚PN^NuNV n 0H2(HЁ n2H4(H҂o n0H2(HЁ n 2(H4(H҂ n4(H6(Hԃ=@o n0(H2(HЁ" n 0 n4=ABn n0 n 2( n4(=@Bn n2(0. n 01A4.HH/B1B4.H=AH/B1B$/o /op`pN^NuNV0. HHnHnHnHnr//N&O=|09=@Bn=n HHnr//NʲO N^NuNVj/.HyHnjNzO Hnjp/NjPp/NFXN^NuNV09Hr//NP09HB/N*PB/<N‚P09H/./N̮PB/<N‚PN^NuNV0.H/././/.NĢO0.r n"n20. n"n2N^NuNV n0 n 0T n0( n 0T n02(AS@ n 0T n0(2(AS@ n 0N^NuNV n0 n 2Af@ n0( n 2(Af, n0( n 2(Af n0( n 2(Afp`pN^NuNV0. HHnHnHnHnr//N&OHnHnaP09HHnr//NO HnaHyHyHyHyp//N&O09H/aX`0.29Af>09 29HҀT0.Hn09 29HҀT =@`$092.Hn 09"=A092.Hn 09"=AJbg0.29Ag HnaX0.H2.H4.H6.H8.H////z//NɂO0.29AfR0.H2.H4.H6.HHyHyHyHy/////</x/NO(N0.H/aX`0.HHnHnHnHnr//N&O=n=n=n=nHnHnaPJg0.HHnHnHnHnr//N&O0.H2.H4.H6.H8.H:.H<.H>.H////////NO 0.H2.H4.H6.H8.H////z//NɂO`=n=n=n=n0.29Ag$Jbg HnaXJfg HnaX0.H2.H4.H6.H8.H:.H<.H>.H////////NrO 0.H2.H4.H6.H8.H////z//NɂO0.H29Hf.HyHyHyHyp//N&ON0.H/aX`Hy/.NP/.NXp-@Ba2XBn`T0.29AfF0.H/NX`40.29Af&0.H/NX`0.29AfN.g"0.@Jgz ftHyp/NjP g6 fRp#09\H @:BP/. aX nB`$09\H @:BP/. aX nBJf09Hr////r //NɂON!v.HHr kڰfN ``t` `NbSnlBn`Hy/.NP0.H/NX/.NXBnp-@Ba|XBn`L0.H/NXBn`6p /NX0.H nBBnp-@Ba.XBn.HH o. l&.HH/NX0.RnH n0.H f0 nBp /NXBnp-@BaXBnJg n fJg nJfJg/.NXp /NXLN^NuNV n"n 23h3h3hN^NuNV0. H fN\ N^NuNV0. Hm lN`&`4``>``D`R`z`j`X/. p/NFP`^/. p/NFP`L/. NHX`>/. p/NI@P`,/. p/NI@P`/. N`X` /. NHXN^NuNV0. H!m lN`J`Z``f`v````t```X```````*/. p!/NQ P`8/. p"/NQ P`$/. p$/NQ P`/. p%/NQ P`/. NaX`/. p&/NbP`/. p'/NbP`/. p(/NbP`/. pX/N@P`/. pY/N@P`/. NIX`x/. p+/NQ P`f/. NNTX`X/. p./NQ P`F/. p1/NSbP`4/. p2/NSbP`"/. p3/NQ P`/. p,/NSbPN^NuNV0. H5m< l2N`:`J`Z``b`r`````````/. p5/NUP`/. p6/NUP`/. NXX`/. p9/Nj@P`/. p:/Nj@P`/. p;/NlP`|/. p/Nj@P`F/. p@/NlP`4/. pA/NlP`"/. pB/NlP`/. pC/NlPN^NuNV0. HEm lN```,`:`H`V`d``|/. pF/NeP`t/. pG/NeP`b/. pH/NeP`P/. pI/NhP`>/. pJ/NhP`,/. pK/NhP`/. NgpX` /. NqXN^NuNV0. HOmx lpN```*`b`8`D`\`N/. pO/NZ$P`H/. N[0X`:/. pQ/NZ$P`(/. NsTX`/. NwX` /. NoXN^NuNVHHy,HnNPHy0HnNPHnp/BN*O n-h<"n-Q"nn  n-h-hBHy/N%O p/Hy$/.N%O A"n"A"n"p/p//.N#O =@H/@rNR nBh f n BLN^Nu"n Q/N.X"n Q/=@N.X2.H=@ 'nJo @m @np`p-@JfHy5p/NjPJgJHy/.N&PHy$/.@N&P. HH/AR A @g / `. HH.HH.HH6.H8.H/////Hye/. NzOLN^NuNV/.NLX=@0.SnJ@g$0.H nHH \g :fNq nf/./.NP`0.HR n//.NP-n-n Bn0.Rn2.HRHl n"nRR`0.HR n Hyx/NP/./. N6PN^NuNVp/NX=@HA n|:TB/pG/NO /.NLX oHy{/.N6P` nB(Hy}/.N6P/. /.N6PN^NuNV~Hp@@ n Jg/.HnHn/a\OJ.f/.Hna.PHnp/BN*O "n i$/./NP n=h=h~09U@f <`p n1@29=@UAfp `p n1@2.H=@H4.H6.~H////x/////NO$0.H2.H4.H6.~H////x/B/.NFOHnHnHnNnO 0.H2.H4.H6.~H////x////x/NO$JngnHn/. NPBn0.H n Jg *gRn`0.HS n BHy/. N6PHn/. N6PpLN^NupLN^NuNVHnp/BN*O n f&HyHnNPHyHnNP`, n f$HyHnNPHyHnNP n-h<1|p n1@p n1@*p n1@Z1|B n1@rC n BHy/.N%O Bp//.N#O =@H/@rNR nBh f n BN^NuHy/.N&P n2(@SAf,HyHnNPHyHnN6PB` n0(S@f,HyHnNPHyHnN6Pp-@`b n0(ZS@f,HyHnNPHyHnN6Pp-@`*HyHnNPHyHnN6Pp-@HnNLX=@H/@R  /TB609U@fBHnHyDHnaO Jg n fRJg&.HH/HyDHy/. NzO`R.HH/HyDHy/. NzO`,.HHHyD/Hy/. NzO` n BN^NuNVHy/.NPN^NuNVHy%Hy Hy!aO JgHy Hy5/.NzO ` nBN^NuNV n B n fHy9HnNP`Hy?HnNPHyEHnN6PHnHy֨HyMazO Jg>Bp/N‚P n fHy֨aX` Hy֨aDXp//N‚PN^NuNVHHnp/BN*O n-hBHyb/N%O p/Hyj/.N%O p/HyR/.N&dO A"n"Hyr/NP09J@fPBn0. @l0H/@ r///r//@NBO "/=Rn`Hy8p/NBPHnHnHnHn/.NêO0.H2.H4.H6.H////x/////NO$09U@f <@` <29=@UAf <`pd2.H=@H4.H6.H8.H:.H////|////|/NO$|A0.H2.H4.H6.H////x/B/.NFOHnHnHnHnp//.N*OBp/N‚P.HHAH @*/NPlX/-@NRX/.=@NXjX"n Q0.H/Hyt/NzO 0.H2.H4.H6.H////x/B/.NFOp//N‚Pp//.NPHyb/.=@N&P@0.H g f0. nBh "n Q/N.X=@H nJkp`p-@JfHywp/NjPJgV0.H2.H4.H6.H8.H:.H////|////|/NO$0.H2.H4.H6.H////x////x/NO$09J@fHnp/NBP nf nBLpN^NuHyj/.N&PHyR/.@N&P.HH.HH=@H6.H////Hy/.NzOLpN^NuNVHHyHnNPHyHnNPHyHnNPHyHnNPHyHnNPHnp/BN*O n-h-h-h-h4-hdBHy/N%O p/Hy/.N%O A"n"A"n"A"n"A"n"A"n"p/p//.N#O =@H/@ rNR nBh  f nBLpN^Nu"n Q/N.X"n Q/=@N.X"n Q/=@N.X"n Q/=@N.X"n Q/=@N.X2.H=@ 'n Jo nm nn nmp`p-@ nn$ nm nn nm nnp`p-@JgJfHyp/NjPJgJgHy/.N&PHy/.@N&P.HH@HH4.H6.H8.H:.H<.H///////Hy/.NzO$LpN^NuNVHnp/BN*O 0. Hr8kRfN3`%`$`"`!`b+`2.`Hy>HnNPHyFHnNP`HyNHnNPHyWHnNP`Hy]HnNPHybHnNP`HygHnNPHykHnNP`pHyoHnNPHyxHnNP`JHy|HnNPHyHnNP`$HyHnNPHyHnNP n-hg :gB 9fHyHnNPHyHnNPHyHnNP`nHyHnNPHyHnNPHyHnNP`6HyHnNPHyHnNPHyHnNP n-hH/@R"/ nHH0/@ <NR"/=Rn`09H2.HHn//NO Bn0. @l H @0nf=nRn`0.H g f0.H2.H4.H6.H////x///</<@x/NO$0.H2.H4.H6.H////x////x/NO$ nfTBn0. @lF2.H A*"PH/@rp/// p//INBO o 0Rn`LN^NuNV nBHnp/BN*O Jbgp`p n1@RJbgp`p n1@jJfgp`p n1@Jfgp`p n1@p///N#O =@H/@rNR nBh fN^Nup n0(R#bp0(#fN^Nup yRNuNVpc//.HnNDO B.BA#p y/NzXJgR`p y +g -f p-@Rp yRHnHnHzbr//NOS y-@JfprN^NuJg .".NN^Nu .".N^NuNVR y (S!@Jk"PR .r` ./9 /NP"N^NuNVB# Hn/. HzNO 9N^NuNVR . yRN^NuNVB#Hn/. HzNO yB 9N^NuNV#AB-H n JgvrR A-H f %f n  %fR n (S!@Jk "PRp` /.NBX-@ n f %gz .N^Nu n  *g -nX`BR B/.HnHz/. NO-@Jg-@ fJgRJo .N^NupN^NuJg/./.N`PJfZ .N^Nu n (S!@Jk "PRp` /.NBX-@ n f .g .N^NuR` .N^Nu y (S!@Jk "PRp`/9NBXNuNVH p| r-Ar-Ar-AAt-B@@@@@-A-A-H nJg^rp kPfN#`2 `"+`-`|`|`|`|NqR` n 0f |0R n *f$n "RX-QR`Hn/.NPѮ n .f4R-H *f$n "RX-QR`Hn/.NPѮ n lf |R nR@r`kfNf`E`e`G`tg`lc`Js`X`x`o`*u`d`J.g "n QX ` "n QX -@Jj r-ADJgp-` J.gp+`p @p.".肀p.JgRR/./.NP-@Jjp-@ .".-AJo8 n//./NO p././/.NJ.f8 .".mS-@Jg n 0fS`JfSJ.f6 .o, . .S-@Jkp./ nNXR`Jgp-/ nNX`*J.gp+/ nNX`J.gp./ nNXJgJjnp0/ nNXp./ nNX .S-@Jk .R-@Jjp0/ nNX` .S-@Jkp nR`p0/ nNX` .SJk* .S-@Jkp nR`p0/ nNX`Jg p./ nNX .S-@JkN .S-@Jkp nR`p0/ nNX` .S-@Jkp nR`p0/ nNXJg p./ nNX .S-@Jk* .S-@Jkp nR`p0/ nNX`p. eg gfpe`pE/ nNXJjp-/ nNXD` p+/ nNXp -@S .r N0 . .r N-@ nJf . lRr6/ nNX` .f6 .o, . .S-@Jkp./ nNXR` .LN^NuNV-n n R@-H Jgx %f0 %fR `"/.Hn/. aO -@Jg-@ `J"g$.gp./ nNX n PR p./ nNX`pN^NudNVpr nR A -@-@g> .r NRr nRЁ-@p nR @ f n lf Rp-@ n N n-@ cg n g n N-@` . f n pN^Nup nr8kHfNf`s`Dc`h`Hx`o`d`p-@Jg o6 . -g +f" -fp`p-@ n NS-@ n f n pN^NuB .r NR".Ё-@ n N-@ .S-@Jg n fJgNJjDJf"n Q `0"n Q `" . 0m 7o n pN^NuB .".Ё-@ n N-@ .S-@Jg 0m 7oJgJf"n Q `"n Q ` n f n pN^Nu-n n N-@Jg oN 0fD . xg Xf0 n N @-H f n pN^NuBS`` n g .0-@ n g .7-@ n g .W-@ .S-@Jg n gx . n -@g".0 n g .7 n g .W n N-@`hJgJf"n Q `"n Q ` n f n pN^NuB .r NR".Ё-@ n N-@ .S-@Jg n fJgl"n Q .0`\Jg"n QR . .S-@Jo$ n N-@RgJg"n QR .` . f n pN^Nu nR N^NuJg"n QR . n N-@Rg .S-@Jg n g"n QB` . -g& .g 0m 9o n pN^NuHnHn/. /./.NO-@Jf n pN^NuJg6Jf"n Q .".N `"n Q !n`pN^Nu n nR N^NuH?aLNu<<><H@HB8F@BBDGmxBm. fJgNGm" fJg "NNJf*Jf$HHxNXOL <@rH@NuNĴGm" fJg "NN:Gf0Jf JfJfJfNNN`@ @Bf(Jf Jf`bBCGNBCG`B BG?GhNH@.音G@HB.| GBHD8"DHB8HA0BAHB:HC<HC>HGFHGBFHF݅dSD҃тBCHD,HBhBD HBH@HA0BA`*8HA0BAHB<.HGHGGHFBGGHFdSD҃тeSD҃т,HBhBE HBBH@HA0`:HA0HB<ŐdEЂeSEЂHEHBhp: "( :HDNpH?aLNuH?aLNuBH@HB<<><8F@:G@BBBBGf Ef.Bm.f.g "NDgNJEfFH@f*Jf$HBfJf FN "H@@@H@NuHBfJfH@@@H@Nu~G@BH@HBDg(f fNujD@8NN҃т m~ӇчE EeNH@EDH@Nun BCFG Eg0JGfBHBfJf @@H@NuփՂJEf*H@ҁр`&JfJfNN BHB @H@EFGGE G4nҁр G o &tG t`4EH@EDH@Nu Go6HCBBHBG"F,, Df>҃тE m E~ӇчH@E EdDH@NuN mD҇~чEH@EDH@NuJk8Jj JfhJfbJf\ fRNuf eDf8NuJkf,Jf&Jf fNuf efNuJ9NuJ9NuH@HDz lH@HA0BAE mBD lPDH@J@fXD|C 1FH@,龳F@LDH@HDNu mJElP` ElDDEME E9oN2B@H@HAEnE$ꩱtӂтH@@H@Nu$艱tӂтH@E @eN@H@NuNPNQH0$h "NBiBi/f$h&( S`RB3BHB3BBF4)g\jVBk Bia`Ha2Ri`tiaaSiJkSi`BBBF/gaJFf BfSi`0 RB Bkv$( Jg(<iSBk:x Bl281  9o"0 R1 1 SBjRiSCzgR$hG0 gSD6CkxQJCk0Q$hBJigS$hB2)H$L NYNXNuBfNu|H0$&҃тdRL Nu/t?<@ B m RSWfO$NuNPNQH~0pr3@3@3@3@av 0fi ` -f iaX 0m> 9n8i 3F <)i/gRi`a:<) ҆Bц` .f JifbRi` Eg efPa +g -f ia 0m0 9n*:)iFi im`?)_ f $hB`4)?)_gDBi/gT3|?Jk Si`Jig ktiaZabSi`aRi`t4)?)_gNR$h$$$h$p0) L~NYNXNu,(g !|NuH$hN<L?3F S fiNu?)_g|NuH<xr`H<xrJg8j8<D d:fBHyՋp=/NO -@`BHyՊpfp//.BpB/NO/.p/pF/NO /. NX/9Hy/9NO BNFXN^NuCPROGCan't open stdin file Can't open stdout file dNVp nR-@Jg/. /NPRfpN^NupN^NuNV n (g f//.NPN^Nu n (S!@Jk"PR .r` ./. /NP" N^NuNV-|B ndJg ` nfpN^Nu/./. /.aO N^NuNV nJg /NX-y-n p n( bg afB`-|R n( +WDHHp n A wg rgP af/</</.NO -@RfpN^NuJ.g <`p@-@`J.gp`p/<//.NO -@RfpN^NuJ.g <`p-@`^J.gp`p/<//.NO -@RfpN^NuJ.g <`p-@`pN^Nu"n#H #n" #H#HJg ` <". n!A N^Nu'NV n(g/p/NP-@`B n ( JfJg/(/( NP n/(NzX"n#H #H#H-@ gJgpN^NupN^NudNV n(g/p/NP`, f" n(g (Ѯ ` n ( n p!@!@(g/./. n/(NO RfpN^Nu npN^Nu/NVB . lTrNR @B-H(f2 n(g& n  -@Jg//( /(NvO R`B .dl( @hJg @h/(N*XR`/.NXN^NudNV .". NR/-@NHX-@JfpN^NuB/./.NvO .N^NuNVJg y//-HNPBJfpN^Nu .X/-@NX-@JfpN^Nu n -HX N^NuNVBaX nY#pN^NuNV nY "@"Y-@-AgBaTX/. aJX-@Jg0 . ".c-@/././.NO /.a|X .N^NuNV n (VDHH (0AJg BpN^Nu n(g(g/p/NP nJf$B/NXJg npN^NuJ.gr n (T!@nb P"nRp-@ g2 f: n (S!@Jk "PRp` /.a"XN^Nu npN^Nu .N^Nu n(fr (//( /(-@NO -@Jj nJf nJo(J.g .D n!@` n!n n n (2JgJ.gp!@` nBpN^Nu n (S!@Jk "PRp` /.a4XN^NuNV-n n (0JgpN^Nu n (VDHHAJf(fp!@ fN^Nu/. NXJg n pN^Nu n J.g (D!@` n !h n (S!@Jk"PR .r` ./. /a$P" N^Nu n (gx fpN^Nu .@J.g. f&p/Hyz n /(-@N^O -@`"p/Hn n /(-@N^O -@p-@`2 n (gpN^Nu n J.g^ gT (T!@ f""PR Jk /p/a>P n R"n QR .JjN^Nup-@ n  -@Jg(gpp/B/(NO -@J.gR .S-@JkDB/ n /(NO p/Hn n /(NzO Jf . gNq/. n /( /(N^O -@`B f n ` .g n J.g n (D!@` n !h"n i " . g2")S#AJk QRr` ./. /aP" n (0JgpN^Nu fpN^Nu .N^Nu dNV nJg(fpN^Nu/9NX n !@ Jfp # pN^Nu n!yp!@!@N^NuNV-np-@ nJg/NLXRѮR` opN^Nu ./-@NX-@JfpN^Nu n#B-H nJg "n"/NLXRѮRX` nBJ6g y2/96/NP#6#2 .N^Nu=NV/.aXN^NuNVH..Jn pL8N^Nu l~ V.I*TgZ -eLf( M L8N^Nu - e$" M$&B&'@( M L8N^Nu(M*U`/NX*@g"Jf#߹ M L8N^NupL8N^NudLNV . //.-@aPN^NuNVH<.. Jn pL/NP#Jjp # pN^NupN^Nud?NVx . gJfp /NX g . ~nS`p}@|Hn|p /NPp /p/NPp.}Bx-@ .xl n C~Rx` . }lF n R `6/. /./.p?/NO-@Jj#p# pN^NuB .N^NudNV/. /./.p@/NO-@Jj#p# pN^NuB .N^NudNV/././. pB/NO-@Jj#p# pN^NuB .N^NuddNV/.N XHn/-@NP .N^NuNVB.p-@S .  @ . . -@ J fA//.NPpN^NuNVp -@B.S . 0". . -@ J fA//.NPp N^NuNVp -@B.S . r N0 . . r N-@ J fA//.NPp N^NuNV-n nJgp/NX nR` .N^NuNVp n-@-@-@ -f r-A-A` n +fp-@ np/NXXJg* .r NR nRr0Ё-@`JgD n .N^NuNVpr n-@-@-A n g . n -@g".0 n g .7 n g .WR np-@`l n .N^NuNVp nR"@ gR` .N^Nu o"oJfSf /Nu o"o / oe  SfNuSfNu o /o "/ SfNuJjDJj Da DNuaDDNuJj DaDNu/HA4f"H@HAHB4g0H@40HB2$Nu/v AdQC AdYC A dUCJAkSC4HBBBHC604HAdSCЁdr2HCH@A&$Nu B"C$&HBHCCHBBBЂ& $NuNV n.f N^Nu nRJfpN^NuNVp.//.aPN^NuNVB nJg.f-HR` .N^NuNVJg4 nJg,"n Jg$pRrR -@JgN^NuS`Jg nJgpN^Nu n JgpN^NupN^Nu o"o / ogSf /NuNV fpN^Nu n (g (0JgpN^Nu n (g .@"n "r#AN^Nu"n Q fpN^Nu"n QS" .)gS` n R .N^Nu o"of /Nud o"ofJfpNunpNupNu o fS Nu,d o"o / oe  Sf`Sf /Nu o / o "/Sf /NuNV . 0m 9np`pN^NuNV .r0k@fN `* `" ` ` ` `pN^NupN^Nu / am zn NuH C #: O0/@11g"HS@4XBB$0 g/`?S@j?(NA.y:LNuH C#> O0/@BA11g"HS@4XBB$0 g/`?S@j?(NN.y>LNuA!o 1oF1o D1o8Bh.1|21|,NACD!I HNuA!o "o1Q8!oBh.1| 21|d,NACD!ICD!I "o282< "o CX/ ED2Q$_HNuA1o8Bh.Bh21|e,NHNuA1o">1o<1o:1o81o61o41o 21o01|1|Bh1|INA0(0HNuA1o">1o<1o:1o81o61o41o 21o01|1|Bh1|JNA0(0HNuABh1|Bh1|MNA"o22"o24"o 26"o280(0HNuA!o01o01|1|1|1|NNA0(0HNuA1o 0!o01|1|1|1|2NA0(0HNuA1o&@1o">1o<1o:1o81o61o41o 21o01| 1|1|1|3NA0(0HNuA!o01o01|1|1|1|4NA0(0HNuA!o0Bh1|1|1|6NA"o22"o 24"o26"o280(0HNuA!o 1o D1o81|.1|21|,NACD!IHNuA1o:1o81o61o41o21o 0!o01|1|1|1|*NA0(0HNuA1o 0!o01|1|1|1|,NA"o 22"o240(0HNuA!o0Bh1|1|1|nNA0(0HNuA1o 21o01|1|Bh1| 1|pNA"o "0Bh 0(0HNuABh1|Bh1|NA0(0HNuA!o>!o:!o 1o D1o81|.1|21|m,NACD!IHNuA1oFN1oBL!o<01o:J1o6H1o2F1o.D1o*B1o&@1o">1o<1o:1o81o61o41o 21o01|1|1|1|NA"oH22"oL24"oP26"oT28"oX2:"o\2<0(0HNuA1o 0!o01|1|1|1|NA0(0HNuA1o21o 0!o01|1|1|1|NA0(0HNuA1oF1o D1o81|.Bh21|i,NA"o2D"o2FHNuA1o21o 0!o01|1|1|1| NA0(0HNuA1o21o 0!o01|1|1|1|!NA0(0HNuA1o81o61o41o 21o01|1|Bh1|dNA0(0HNuA1o81o61o41o 21o01|1|Bh1|eNA0(0HNuA1o01|1|Bh1|fNA0(0HNuA1o01|1|Bh1|gNA0(0HNuA1o 21o01|1|Bh1|hNA"o 22"o24"o26"o280(0HNuA1o:1o81o61o41o 21o01|1|Bh1|iNA0(0HNuA1o01|1|Bh1|kNA0(0HNuA1o:1o81o61o41o 21o01|1|Bh1|lNA"o22"o 24"o$26"o(280(0HNuABh1|Bh1| NA0(0HNuA!o 01o 21o01|1|1|1| NA0(0HNuA1o D1o82<"o C/ EF4Q$_Bh.1|21|,NHNuABh1|Bh1|NA0(0HNuA!o4!o0Bh1|1|1|ZNA"o 220(0HNuA1oF1o D1o8Bh.1|21|',NA"o2D"o2FHNuA1o D1o8Bh.1|21|,N0(DHNuA1o D1o8Bh.1|21|,N0(DHNuA1oF1o D1o8r"oRJf1A2p"o/ ED4Q$_1|.1|,NHNuA!o1o81|.Bh21|61| ,NACD!IHNu"0<sNBNu"0<NBNu.FFFF.FFFFFV1.04COMMAND WINDOWABCDInput Image ->Output Image ->Image ->,AIM.INFwppwUwfUD3"helpexitconvreadf[ile]creadwritf[ile]gdisplaybdisplaydondofftontoffcopyaddsubmuldivminimummaximummindevcaddcmulcdivhistogramthresh[olding]equal[ization]filterlaplacegradxgradyuniflminlmaxharahavemediaanerosiondilationpropag[ation]skelet-skeletcontourmajorityremove[noise]life gamesinpix[els]endpix[els]linkpix[els]verticesbcopyandorexorinvertsetresetlabelgrabgreadgwritj ho JtJPy؄Z؊ ؕh؞اIثJ$ذJ2شJBع?ؾ@pA\B~CjFGHDVE&E!6 > #+17<AFMtKN<PLX"`#i%w'~*ن-َ.ٗ0٥1"ٯ2nٻ3456829:>[1][No more space to allocate|for the entry table][ OK ]%s .aiminfinite = -1ra[1][Unable to open command file|%s][ OK ][1][Only 16 macro levels atmitted!][ OK ]Unknown command [1][No memory to allocate image %d][ OK ].hlpcoef1 ->coef2 ->coef3 ->mul ->add ->mul ->add ->mul ->add ->size ->size ->size ->Filename ->.imPI1pi1PI3pi3NEOneoImage %s not found Error in reading image %s Filename ->dummy.im.colPI1pi1PI3pi3NEOneoImage %s not found Error in writing image %s Filename ->.colPI1pi1NEOneoImage %s not found Error in reading image %s bitplane[1-8] ->Bitplane ->Threshold ->; Threshold = %d Number of iterations:CLP Bitplane:Connectivity:Edge value ; After %4d iterations no pixels changed Number of iterations:CLP Bitplane:Connectivity:Edge value ; After %4d iterations no pixels changed Number of iterations:CLP Bitplane:Mask bitplane:Connectivity:Edge value ; After %4d iterations no pixels changed Number of iterations:CLP Bitplane:Edge value ; After %4d iterations no pixels changed Number of iterations:CLP Bitplane:Edge value ; After %4d iterations no pixels changed CLP Bitplane:Edge value ;CLP Bitplane:Edge value ;CLP Bitplane:Edge value ;Number of iterations:CLP Bitplane:Edge value ;CLP Bitplane:Edge value ;CLP Bitplane:Edge value ;CLP Bitplane:Edge value ;CLP Bitplane:Edge value ;Input bit 1:Output bit:Input bit 1:Input bit 2:Output bit:Input bit 1:Input bit 2:Output bit:Input bit 1:Input bit 2:Output bit:Output bit:Output bit:Output bit:add ->add ->mul ->div ->display mode ->[1][ No frame grabber attached ][ Sorry ][1][ No frame grabber attached ][ Sorry ][1][ No frame grabber attached ][ Sorry ]Bitplane:Connectivity: Last label %d, removed %d labels error %d @@cdisp[1][Incompatible image types][OK]pre_op%.2f sec > [1][OK freezes image][ OK ]grabberblowblowblowblowbhigh %s b%d %s %s %s glowghigh.hdCOLcolfrom_disc.hddgsreaddgsreaddgsread yYtTyYtT, HIT A KEY %s bit %d %s %s %s [1][Escape from iteration][ QUIT | CONTINUE ] [1][FATAL ERROR|Out of memory.|Cannot allocate.|%s][ QUIT ]set_FDBexitexit[1][Macro interrupted.|Do you want to quit? ][ ALL | ONE | CANCEL]exit 1281024[1][Values of mult or add|not in range][ OK ]grad%c %c,%c,%d,%d*.\*.\READ IMAGE READWRITE IMAGE WRITEIM B/W IMAGE COL COLOR IMAGE PI? DEGAS IMAGE NEO NEOCHROME IMAGE cread %s,%creadf %s,%cwritf %c,%sgrab AIM EXECUTE MACRO @%s LOAD SAVE SETUP INF 0%d[1][Value of threshold|not in range][ OK ]thresh %c,%c,%d,%d 010240-15[1][Values of mult, add|cd, chv or cc|not in range][ OK ]filter %c,%c,%d,%d,%d,%d,%d LAPLACElaplaceEQUALIZEequalCOPYcopyADDaddMULTIPLYmulDIVIDEdivMEDIANmediaan%s %c,%c LOCAL MINIMUMlminLOCAL MAXIMUMlmaxUNIFORMunif363[1][Value of Size|not in range][ OK ][1][Value of Size|must be odd][ OK ]%s %c,%c,%dEROSIONerosionDILATIONdilation1[1][Value of Iterations|not in range][ OK ]%s %d,%d,%d,%d,%c !"1[1][Value of Iterations|not in range][ OK ]propag %d,%d,%d,%d,%d,%cGDISPLAYgdispHISTOGRAMhist%s %c bdisp %c,%dVERSION 2.31 AUGUST 1987r%simage%s%smacro%s%shelp%s%slog%s%saspect%d%s %d%h %h %h %h[1][Error in|%s][ OK ][1][Setup file:|%s|not loaded.][ OK ]wimage %s macro %s help %s log %s aspect %d align %d %d %d %d %d [1][Cannot open file:|%s.|Setup not saved.][ OK ]AIM LOG TO FILE w[1][Cannot open file|for logging][ OK ] 0[1][Value of Subtract|not in range][ OK ]sub %c,%c,%dCADDAddend : ____0AddendcaddCDIVIDEDivisor : ____1MultiplycdivCMULTIPLYMultiply : ____1Divisorcmul[1][Value of %s|not in range][ OK ]%s %c,%d !"#$'(+,/012ANDandEXORexorORor%s %d,%d,%d,%c #$'()* bcopy %d,%d,%c,%c SETsetRESETresetINVERTinvert%s %d,%cSKELET100skelet-SKELET100-skeletLIFEGAME1life[1][Value of Iterations|not in range][ OK ]%s %d,%d,%d,%c CONTOURcontourMAJORITYmajorityNOISE REMOVALremoveISOLATED POINTSsinpixENDPOINTSendpixLINKPOINTSlinkpixVERTICESvertices%s %d,%d,%cHLP HELP r[1][Cannot open file|%s][ OK ][1][No memory available|for help text.][ OK ] label %c,%c,%d,%d [1][The palette of the text-window|cannot be changed][ CANCEL ]0123456789abcdef ((((( H ((((( H  HARACIMtMULCoBDISPǖGETDOUBLMOVE_HIS(GLOBALFGL_WCHARBUFFER W_GETCH"DO_DESKM;LHMIMAQEXITCI J_VENV*PTSOUTF_32KGRAF_MOU‚GET_BIT&ERRNO _INAMEjDO_LAPEQQ PEEKLCXS55.SAVE_SET_REALLOCITERtSTABARG*FORM_CENêDISPOFFJ$GL_HBOXTODISCjADDConDO_SECON=MACRO_FI PRT_HELPoRFREOPENDTIMEONJ2PMAXCIGDMACTLV_GET_PIFGET_PATHCGET_FILEDPRSTABSKELIFEj@UNGETC`VVVDILA$NUMBERHEQLp|EVNT_MULREP_MACR:MAXFILdFRAME_WCXM22RCLOSEzDWRITEvWIND_UPDPEPCI0HISTPlMENU_IENǎDMALOW\INITPROPWIND_DELPLOTVVVPROP^FIND_WIN#LHEXs"CXNRM5HAVECINSKELWCI*GL_WBOXSHAD:GRADYCIHAVE@CXD55VS_CLIPMENU_ICHBIT_MASKdMEDIrPLOTLV_GTEXTZFIRSTLINvSINCI2nQUEUE_EN^DRAW_FOR#GEMDOSVSF_COLO*CXNAN5IMAGE_FIDTHRRGRAF_SHRCXINITPLOTHRC_EQUAL+x_PFMT|RLSML_MNEXTնBDISPCIGRECTTOA+ CXV54_VENVP2GEM_INITFRSRC_LOASTRCMP,PTSINFMEDICILDIVoFIRSTCOLzDO_ALIGN.8FLUSHFIL0_ONEXITSTACK_ADxVVVRCLE_FILBFB_SFMT_ONAMEՊ_MBASEղUNIFCIDGSREADVVVRCLBDO_SUBTRaSBRKPRE_OPMULn_CTYPE _MNEEDAPPL_EXI>DEGASRZCOPCI?QUEUESIZ`ADDnREMLLByFDB_SCRCXD22RCINTERS(DO_CONSTbSTCD_ILSBRKRBRK"WDELCHARbDCREATMALLOCHINIT_WIN MAINLISTGRADX_STCH_IJREST_WIN' DO_IOPICFDO_PROPAXSTCL_OCXV25LOG_FILEGRADY]~COL_NORMGETCHRpATOX~STCL_HX_STACKSPRINTFzENVIRON_VENVL6_MSIZEպINITCLPPROPCI%NOT(2@ D(. *(>  86,  <>~,XD $ 4>TD $ 4VD( 4\D( n$6 \ X <$6 \ X <6 T P:f6 T P4Pf@b:.\2vD $ :&62P. 8Pt* <<<88FF ` F`6  4"dD( 4:6ВD $ ><4   , ZD( 2 0 Bd  (    0 V04(@::00 T.L88::@@@B(v88:<>@@@B$60 hnBBDDTJJL4 >(4f`nT@@B8&v ><>8>8:8nVFhV06 $ $^ $D $ ("( >68b 6PF 8< 8 P8(DBR>(Dd < &  >4&f .& (D "$".V` & d*".Z` &  *".t: & <t ^4@   *& Z 6@ d .* T d2 L0 ld$N`" >(ڈVF6 *,  ,   * *4 @                  ,     *            2  $           2  *$           .,    &      4D$B " HD:L8  $ 80    $ L< <$  TV600* " N $B:, @    @" 4RJ6* R6   & $    D  .T6N F^t\D  8 *08  L L P*  ZH48: *    P $         *0     (    0 6 R:"4>( J8  ,      . H0|  D ^          $  <       (2   (     L0(   $  L0(   &  $    $                         $ X        ,,   ,             B00   (       $ .     $ , (     $  ,       4  (,(  J N         &$ B " H  L  &(0  ,R  X 06@4$604(4Bh8*&2 .   (.   ,DVL62@8X" `b*>&2f( 0$ X&2`:x  &, n &V*^NVN"t6"&. .        8> 4TX2Vh@:  :&>l$. $:0  P4Xh  $X0 $&* j,"20&"NT"0  B( ( @ :0` 0 . 0.2`**f\$ T@B .*< LL0**T*"0*H* ".6>*0(00::""(.@"@.0< ((""J ($  2 2 2$ 2RZLR Desk File GreyOps CelOps BinOps Utilities About Aim-------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Read Image Save Image ---------------- Grab Image ---------------- Load Setup Save Setup ---------------- Macro Logging ---------------- Quit ^C Copy Add Subtract Multiply Divide Cadd Cmultiply Cdivide ------------- Threshold Equalize Uniform Filter Laplace Gradx Grady Lmin Lmax Median Erosion Dilation Propagation --------------- Skelet -Skelet Contour Majority Remove Noise Life Game --------------- SinPixels EndPixels LinkPixels Vertices Copy And Or Exor Invert Set Reset---------- Label Gdisplay Bdisplay Histogram --------------- Palette Preferences --------------- HELP!!! GRADXInput Image Output Image DEFAULTRANGE 1024Multiply : _____999991  10000 128Add : ____X999-255  255OKCANCELLAPLACEInput Image Output Image OKCANCELTHRESHOLDINGInput Image Output Image DEFAULTRANGE000Threshold : ___9990  255Bitplane :OKCANCELFILTERInput Image Output Image DEFAULTRANGE 1024Multiply : _____999991  10000 0Add : ____X999-255  255 0Diagonal Cf : _____X9999-1000  1000 -1Hor & Vert Cf : _____X9999-1000  1000 5Central Cf : _____X9999-1000  1000OKCANCELLOCAL MINIMUMInput Image Output Image DEFAULTRANGE 3Size : __991  15OKCANCELDILATIONInput Image :DEFAULTRANGE 1Iterations : ___9990  512CLP Bitplane :Connectivity :Edge value :OKCANCELPROPAGATIONInput Image :DEFAULTRANGE 1Iterations : ___9990  512CLP Bitplane :Mask Bitplane :Connectivity :Edge value :OKCANCELHISTOGRAMInput Image OKCANCELA I MATARI IMAGE MANAGERCENTRE FOR IMAGE PROCESSINGDELFTVERSION 2.1 MAY 1987Image Processing : Frans GroenGEM Userinterface : Robert de VriesLow-res displays : Igor WeberOKBDISPLAYInput Image BitplaneOKCANCELEXORInput Image :Inputbit 1 :Inputbit 2 :Outputbit :OKCANCELBCOPYInput Image :Output Image :Inputbit :Outputbit :OKCANCELRESETInput Image :Outputbit :OKCANCELLIFE GAMEInput Image :DEFAULTRANGE 1Iterations : ___9990  512CLP Bitplane :Edge value :OKCANCELISOLATED POINTSInput Image :CLP Bitplane :Edge value :OKCANCELHELPTEXTTEXTTEXTTEXTTEXTTEXTOKMULTIPLYInput Image DEFAULTRANGE 0Add : ____X999-255  255OKCANCELSUBTRACTInput Image Output Image DEFAULTRANGE 0Subtract : ____X999-255  255OKCANCELREAD IMAGEWindow :STANDARDCOLORIFF1st WORDDEGASNEOCHROMEFormat :OKCANCELLABELInput Image Output Image BitplaneConnectivityOKCANCELPALETTE000COLOR X:_/_/_999OKCANCELPREFERENCESONOFFKeep aspectratiosONOFFAlign images tobyte boundariesOKCANCELFILE SELECTOR TITLE ANO ltuv|}~2BH^qw $ 8AB QYZ[abcg| blm  $ %$ & D E I R S  u z {     . 8 9  H P Q R X Y Z ^ s                # , -  < D E F L M N S c }                     % & ' 1 2  F L M          / 0 P P0 $ + 2  < E N%  NP  Z f{    ,=N_p   4!3 " # $ % & '  ( )' *5 +C ,Q -_ .m /{ 0 1 2 3   D5C6789:;</=?>O?_ @o A B C 4NEM F G H I J K L M D  OV'PQR%S5TEUUVeN u)) 2   ABC D    A BC  D N j       %  ) )     ABC D )   A BC  D7 %: )) P  ABC D ^   A BC  D .    123456 7 8 % ++J   ABC D    A BC  Df    7  d   %))*   ABC D    A BC  DF b~ ' . %1 (!( C  ABC D      123456 7 8  468    01!%(-(    ABC D & B  ^    123456 7 8% #" 123455 5!6 "7 8$6 (%' &4'6$8 )G,*++0)1-X%[)  ) z n  ABC D |%* *        ' F ))"  T  ABC D  b  1 2345556 7  8 k % n )4)>  |  ABC D     1 233345556 7  8  %$ 123334 5!5"5#6 $7 8&  3'2 (1)2*3+3,3-4.5/50516 27 &84 % ),)Z    ABC D    A BC  D   1233345556 7 8  +*  1!2"3#3$3%4&5'5(5)6 *7 8, % ))v    ABC D     1 233345556 7  8 $ % ' ((  :  ABC D     w   123456 7 8   01 % ((    ABC D    1 23456 7  8 01  %  3 3:+V+r+++  +'  ) )   .  ABC D   6  h  s % v ))R    ABC D     A BC  Dn     %  --  ABC D     2N j 3 <% ?)#)  N ABC D  \   A BC  D j1233345556 7 8 s "!  4!68 #  %    0p1q2 r30s 4@t 5Pu 6`v 7pw  8x 9yAzB{ C|D}E~F   %  %       .J        %  !( f!j$R' ),201249=@BBERFBGIKjNPR*01249>@hC ExFhGIKOQRh8 $ RLRp Desk File Greys CelOps Bins Utils About Aim-------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Read Image Save Image ---------------- Grab Image ---------------- Load Setup Save Setup ---------------- Macro Logging ---------------- Quit ^C Copy Add Subtract Multiply Divide Cadd Cmultiply Cdivide ----------- Threshold Equalize Uniform Filter Laplace Gradx Grady Lmin Lmax Median Erosion Dilation Propagation --------------- Skelet -Skelet Contour Majority Remove Noise Life Game --------------- SinPixels EndPixels LinkPixels Vertices Copy And Or Exor Invert Set Reset---------- Label Gdisplay Bdisplay Histogram --------------- Palette Preferences --------------- HELP!!! GRADXInput Image Output Image DEFAULTRANGE 1024Multiply : _____999991  10000 128Add : ____X999-255  255OKCANCELLAPLACEInput Image Output Image OKCANCELTHRESHOLDINGInput Image Output Image DEFAULTRANGE000Threshold : ___9990  255Bitplane :OKCANCELFILTERInput Image Output Image DEFAULTRANGE 1024Multiply : _____999991  10000 0Add : ____X999-255  255 0Coefficient 1 : _____X9999-1000  1000 -1Coefficient 2 : _____X9999-1000  1000 5Coefficient 3 : _____X9999-1000  1000OKCANCELLOCAL MINIMUMInput Image Output Image DEFAULTRANGE 3Size : __991  15OKCANCELDILATIONInput ImageDEFAULTRANGE 1Iterations : ___9990  512CLP Bitplane :Connectivity :Edge value :OKCANCELPROPAGATIONInput ImageDEFAULTRANGE 1Iterations : ___9990  512CLP Bitplane :Mask Bitplane :Connectivity :Edge value :OKCANCELHISTOGRAMInput Image OKCANCELA I MATARI IMAGE MANAGERCENTRE FOR IMAGE PROCESSINGDELFTVERSION 2.1 MAY 1987Image Processing : Frans GroenGEM Userinterface : Robert de VriesLow-res displays : Igor WeberOKBDISPLAYInput Image BitplaneOKCANCELEXORInput ImageInputbit 1 :Inputbit 2 :Outputbit :OKCANCELBCOPYInput ImageOutput ImageInputbit :Outputbit :OKCANCELRESETInput ImageOutputbit :OKCANCELLIFE GAMEInput ImageDEFAULTRANGE 1Iterations : ___9990  512CLP Bitplane :Edge value :OKCANCELISOLATED POINTSInput ImageCLP Bitplane :Edge value :OKCANCELHELPTEXTTEXTTEXTTEXTTEXTTEXTOKMULTIPLYInput Image DEFAULTRANGE 0Add : ____X999-255  255OKCANCELSUBTRACTInput Image Output Image DEFAULTRANGE 0Subtract : ____X999-255  255OKCANCELREAD IMAGEWindow :STANDARDCOLORIFF1st WORDDEGASNEOCHROMEFormatOKCANCELLABELInput Image Output Image BitplaneConnectivityOKCANCELPALETTE000COLOR X:_/_/_999OKCANCELPREFERENCESONOFFKeep aspectratiosONOFFAlign images tobyte boundariesOKCANCELFILE SELECTOR TITLE QWXu}~  8@ABHIJN^*=CYlr   #$%+,-1F %/0 IOP$      8 = > |           - a q r               5 > ?  \ d e f l m n s               @ H I J N \ j v w  x { | }     P P" $ + 1  8 @ F NP  L Xm    /@Qbs   4!3 " # $ % & ' ( )  * +# ,/ -; .G /S 0_ 1k 2w 3   D5C6789:;<= >?+ @; AK B[ Ck 4{NEM F G H I J K L M D  OVPQRSTU!V1N A$$  Y  ABC D g   A BC  D    <   X   % $ $  t    ABC D    A BC  D % $$   ABC D *   A BC  D    b j  123456 7 8v %y ((   ABC D    A BC  D8T  p   0 _  %$$   ABC D    A BC  D4   % $!$P    ABC D l   JR  123456 7 8a  468 p   01!%$-$    ABC D      123456 7 8 #" 123455 5!6 "7 8$ (%' &4'6$8 ) ,*++0)1-%$  $ 0  1  ABC D ?%B$ $L Q eh     ' $$     ABC D  %  1 2345556 7  8 . % 1 $4$  ?  ABC D  K   1 233345556 7  8 X %$ 123334 5!5"5#6 $7 8& e 3'2 (1)2*3+3,3-4.5/50516 27 &84 r% u$,$     ABC D     A BC  D   1233345556 7 8  +*  1!2"3#3$3%4&5'5(5)6 *7 8, % $$,     ABC D     1 233345556 7  8  %  $$H     ABC D d    1 9  123456 7 8 H  01 W% Z$$ s  ABC D    1 23456 7  8 01  %  $ $    ( D `  | ' $ $      ABC D        + % . $$   @  ABC D  N   A BC  D$ @\     %  $$x   ABC D                % $#$<   ABC D     A BC  D 1233345556 7 8 ) "!  4!68 # 6 % 9 X  0p1q2 r30s 4@t 5Pu 6`v 7pw  8x 9yAzB{ C|D}E~F t  `% c  "              %  !( 8`! $&(+081@2H4p9h=?BEEG`IXK NPQIlK4NPQ0t1|249=@4BEDF4GIKtNPR4* Analysis of electronic scheme * by Cellular Logic Operations * Frans Groen TU-Delft * @DEMSHA * correct the image for shading doff * display off bcop 1,8 * copy the thresholded image bcop 1,6 * original in green inv 6 * after inversion * * separation of drawing and text * * * fill small holes bcop 8,7,B,B * copy bitplane don erosion 1,8,4,0,B * erode small holes away prop 511,8,7,8,0,B * propagate for what remains inv 8 * cleaned drawing in red don,4 * multi-bitplane display on bcopy 8,5,B,B * save original in b5 doff * display off * * make skeleton skelet 511,8,1,B * skeleton in b8 don * single bitplane display bcopy 8,4 * save skeleton in b4 * * shave skeleton bcopy 8,7,B,B * copy in b7 -skelet 16,7,1,B * remove strokes of length 16 exor 8,7,7,B * find strokes vertices 8,0,B * vertices in bitplane 3 dilation 1,8,8,0,B * enlarge vertices propag 511,8,7,8,0,B * propagate vertices in strokes exor 4,8,8,B * cleaned object in b8 bcopy 8,4 * save in b4 * * separate text based upon vertices in * the skeleton with removed strokes * bcopy 8,7 * copy for propagation mask vertices 8,0,B * find vertices propag 511,8,7,8,0,B * propagate vertices in skeleton bcop 8,4,B,B * save cleaned skeleton in b4 propag 511,8,5,8,0,B * propagate skeleton in drawing doff * display off reset 7 * reset for display don,4 * multi-bitplane display bcop 8,5 * save original in b5 *doff * display off * *analyse objects *capacitors : big objects bcop 5,6 * original in b8 ero 4,6,4 * find capacitors prop 4,6,5,8,0,B * propagate back * capacitors in b6 *resistors : objects enclosing small holes don,4 inv 5,B * invert bcop 5,7 * original in b7 ero 5,7 * erode 5 times propag 511,7,5,8,0,B * find what remains exor 5,7,7,B * find what disappears * resistors in b7 * opamps bcop 5,8 erosion 7,8,8,0,B * erode 7 times propag 511,8,5,8,0,B * find what remains exor 5,8,8,B * and what disappears exor 7,8,8,B * removes the resistors doff * opamps in b8 * finds location of components in scheme * extend opamps dilation 2,8,6,0,B * extend opamps bcopy 8,1,B,B * save seed bitplane propag 3,8,4,6,0,B * propagate in skeleton or 1,8,8,B * or seed bitplane bcopy 8,1,B,B * opamps in b1 * extend resistors dilation 2,7,6,0,B * extend resistors bcopy 7,2,B,B * save seed bitplane propag 3,7,4,6,0,B * propagate in skeleton or 2,7,7,B * or seed bitplane bcopy 7,2,B,B * resistors in b2 * extend capacitors bcopy 6,3,B,B * save seed bitplane propag 3,6,4,6,0,B * propagate capacitors in skeleton or 3,6,6,B * or seed bitplane don,4 * multi-bitplane display on bcopy 6,3,B,B * capacitors in b3 * determine endpoints and branchpoints * find scheme without components bcop 4,8 * get cleaned drawing (b4) inv 8 * invert or 1,8,8 * get rid of opamps or 2,8,8 * resistors or 3,8,8 * capacitors inv 8 * drawing without components bcopy 8,6 * copy in b6 for vertices bcopy 8,7 * copy in b7 for endpixels * find endpixels of the components endpix 7,0,B * find endpixels dilation 2,7,6,0,B * extend endpixels * find vertices vertices 6,0,B dilation 2,6,6,0,B * * color assignment * lines : grey resistors : blue * endpixels: yellow capacitors : green * vertices : purple opamps : red *dilate lines because of low_res display dilation 1,8,6,0,B or 6,8,8 or 7,8,8 * lines : grey 876..... exor 8,6,6 * vertices : purple 87...... exor 8,7,7 * endpixels: yellow 8.6..... * insert components or 1,8,8 * opamps : red 8......1 or 2,7,7 * resistors: blue .7....2. or 3,6,6 * capacitors: green ..6..3.. * example of shading correction by subtraction of * the background. * background is calculated by maxmin filtering * ton * timer on readf SCHEMA.IM,A * read image * thresholding is not possible * with uncorrected image thresh A,B,1 * calculate the background by * maxmin filtering lmax A,B,31 * max filter lmin B,C,31 * min filter sub A,C,255 * subtract background * obtain from the corrected image * a binary image by thresholding thresh C,B,1,220 * threshold toff vAf{mRZ^cffkmf]2fbjnnrmV\AMVZ]abV^iflkkfkfieac^FbvYmvl}q{zKmoqi{lrc;NmFm{vvzzfaKfqvyvrQf|cffVsqrnuaIk\AZzLv»aY^z{j][vrwnlGkVCcN{bcbejrRbvskvGmsIQnMyibfknmkfjjkfa^zlfgNfsokzKqfF^vQk{MNRmveinJq[NfUisANv{]jvFrvSVrSjazWiIrbNbQjyWmGq]eySRnQügvSjBq]frJVrNnESmvyyyyvvz{v{{{zvqa6qbI\{Sƽqv6=BKQQVVRSSUUV[[YVQMB3sWMcSk{GVjrsyy{{{|yj;svKSnSmyVnCEJMNMMNSUVVSVVUUVVVNNNJ2[F=FFJMMKFFCACAA.:r@  #fn|mkv' Bk{s=anrrrvuvyyy|{||{{{y{sN^zJZlrssrqqrvqqkfVC{P)"*+>r[KBBA&5BJJQewN{YLcfffcjeba^[V6jnM{z^[\\V6Rbfjvz{vQasvQmKIJKKKMFFAA;6>rnF{¼Nv^n{RvvsvvvvssnkljrqFYarwKlF»V^ssNkF{V`vrKiIyS^viFynJ{V`yaA6]jnKV_vAQV^[nnMR^vKvlrrrnafpNV]v|NyriabmwffkZmpNR\ywSvnfmnbnfkYjnFyV[{wVqr][Vf\eqb]{iFyV]zZqq^VMmlf|erlJyV]{zYpqnqknm]f|k^{mK{»\[{sVolzlazqniKZ]y[msgKzZ\{z[lrkK{¹[[v^kvln\^kanq{liQ{]Wv]krqffm]SVf]VZSaL[Ys]fmrfi\^{\K=VcK|YYpagqfvfjf^R[^bN½[Vnbam{ffyj{]^rqcR[Wnaas_]vvbacs{cR{[VeNq`nfbymeR[\}5#[vvQqaV»\Y{A1FFUNvaN{º[Zvj[BbneS^]nFvdV¹a[gEz`ZbZ^C{^U]ZkN^V{bYuV[V}cNqRZRrq{~cKjNaYw}nnvwbf;k{{{{zvussrrrqvnqnmkilnfaKR^[ýyjsk[|{{yvvvsrnqnqqmnllmffffae^a^aaa\^a]^]]\VYYY\[\]VVUSSBbrAfvAcq=fq=b{uAfyFezKiMfKcvLf{Qf|Qk{UjzQlRfOc|jcnrfy{r{Nf^NfyfCRRlvZVbfJryNfcFq{]AaSfvm^bkMsyMeyV{|jANMk|r\muSvvNbv[{|qBZf{{j]yz[vzRfs\z{sVvvvLfv{VvYjv^qyjyqwS[n{fVf{{{|svvSfySizSjn|szQfzFszNn|{Vk#a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #E 18 11 #W 00 00 0E 05 11 09 08 A:\ART__051.325\*.*@ #W 00 00 0D 08 15 0B 00 @ #W 00 00 0E 09 15 0B 00 @ #W 00 00 0F 0A 15 0B 00 @ #M 00 00 00 FF A FOLDERS PD,@ @ #M 03 03 00 FF B ART DISK 11.@ @ #T 00 03 02 FF TRASH@ @ #F FF 04 @ *.*@ #D FF 01 @ *.*@ #G 03 FF *.APP@ @ #G 03 FF *.PRG@ @ #F 03 04 *.TOS@ @ #P 03 04 *.TTP@ @