+ All Categories
Home > Documents > Vecto Quantization - Approximate PNN

Vecto Quantization - Approximate PNN

Date post: 17-Aug-2015
Category:
Upload: adriano-carafini
View: 246 times
Download: 1 times
Share this document with a friend
Description:
Describes implementation of VQ algorithm using Approximate PNN methond.
Popular Tags:
41
Computers & Geosciences Vol. 18, No. 9, pp. 1213-1253, 1992 0098-3004/92$5.00+ 0.00 Printed in Great Britain. All rights reserved Copyright© 1992 PergamonPress Ltd COMPRESSION OF DIGITIZED MAP IMAGES DAVID A. SOUTHARD The MITRE Corporation E073, 202 Burlington Road, Bedford, MA 01730-1420, U.S.A. (Received I0 February 1992; accepted 30 April 1992) Abstract--An efficient way to store and retrieve digitized chart images using a lossy vector quantization 0/Q) compression technique is presented. A VQ codebook is located using the fast pairwise nearest neighbor (PNN) clustering algorithm. A k-d tree data structure is used for efficient image compression. Some unique features of this approach are that compressed files use a predictable amount of storage, and can be decompressed quickly for display on equipment ranging from portable personal computers to advanced graphics workstations. The method also applies to panchromatic and multispectral satellite imagery. In this application, digitized chart images with compression ratios of 24: 1 exhibited good quality. In certain applications, even higher compression ratios are feasible. Key Words: Digital mapping, Image compression, Vector quantization, Clustering algorithms, k-d tree. INTRODUCTION This investigation into image compression techniques was motivated by technical issues surrounding the design of an automated mission planning program termed the Air Force Mission Support System (AF MSS) (Southard, 1992). The display of digitized navigational charts is central to the function of this system. The Defense Mapping Agency (DMA), supplies digitized charts on compact disk read-only memory (CD ROM) media. These georeferenced digital im- ages are termed Equal Arc-second Raster Chart (ARC) Digitized Raster Graphics (ADRG) (Defense Mapping Agency, 1989). It was estimated that AF MSS would need on-line about 200 gigahytes (GB) of ADRG data, in its raw form. Image compression is one strategy that will be used to reduce this costly storage requirement. The techniques are described and evaluated, and a set of algorithms that meets the goals set by AF MSS are presented. An ANSI C source code for these algorithms is provided. Applications The methods selected have broad applicability to many automated mapping, charting, and geodesy systems. Digitized charts can replace paper charts in many display applications. Digital mapping, remote sensing and analysis, computer-aided design for civil engineering, architecture, and environmental analy- sis, global positioning and navigation, and geographi- cal information systems (GIS), are some examples. Digitized chart images are useful in military mission planning and command, control, and communi- cations (C 3) systems. Image compression techniques Compression techniques can be classified into two broad categories: lossless, and lossy. Lossless algor- ithms include such well-known techniques as run- length coding, quadtree coding, Huffman coding, and the Lempei-Ziv algorithm, which is used by the UNIX compress utility (Welch, 1984). A lossless algorithm reconstructs compressed data exactly to its original state. The degree of compression depends on the content of the data. On typical chart images, lossless techniques can achieve up to about a 2:1 compression ratio (the ratio of the original image size to the compressed image size). Table l shows the compression of selected chart and satellite images using run-length, Huffman, and Lempel-Aiz coding. In some situations, however, these coding schemes increased the size of the images. Lossy algorithms admit higher compression ratios. Lossy algorithms include differential pulse code modulation (DPCM), vector quantization (VQ), and the discrete cosine transform (DCT), which is the central technique in the popular JPEG and MPEG standards (Rabbani and Jones, 1991). Lossy algor- ithms will degrade the original image somewhat, depending on the image content, the amount of compression, and the properties of the algorithm. In many situations, however, some degradation is per- missible. The loss may be visually imperceptible. The classification and compression techniques that are presented are appropriate for display and analysis of many types of scientific and engineering images. The lossy character of these algorithms, however, would make them inappropriate for archival data storage, or for situations that require complete accu- racy. In these instances Iossless algorithms must be employed. For example, Digital Terrain Elevation Data (DTED) supplied by the DMA for hilly terrain in central Germany can be compressed to an average compression ratio of 1.7 using Huffman coding, and 3.4 using Lempel-Ziv coding. It would be inappropri- ate to use a lossy technique, because this would 1213
Transcript

Computers & GeosciencesVol. 18, No. 9, pp. 1213-1253, 19920098-3004/92 $5.00 + 0.00 Printed in Great Britain. All rights reservedCopyright 1992Pergamon Press Ltd COMPRESSIONOFDIGITIZEDMAPIMAGES DAVID A.SOUTHARD TheMITRECorporationE073, 202BurlingtonRoad,Bedford,MA01730-1420, U.S.A. (ReceivedI0February1992; accepted30April1992) Abstract--An efficient way to storeandretrieve digitized chartimages using alossy vector quantization 0/Q)compressiontechniqueispresented.AVQcodebookislocatedusingthefastpairwisenearest neighbor(PNN)clustering algorithm.Ak-dtree datastructureisused for efficient image compression. Some uniquefeatures of this approachare that compressed files use a predictable amountof storage, and canbedecompressedquicklyfordisplayonequipmentrangingfromportablepersonalcomputersto advancedgraphicsworkstations.Themethodalsoappliestopanchromaticandmultispectralsatellite imagery. In this application, digitized chart images with compression ratios of 24: 1 exhibited good quality. Incertainapplications,even highercompressionratiosarefeasible. KeyWords:Digital mapping,Image compression, Vector quantization,Clustering algorithms, k-dtree. INTRODUCTION Thisinvestigationinto image compression techniques wasmot i vat edbytechnicalissuessurroundingthe designof anaut omat edmissionplanningprogram termedtheAirForceMissionSupport System( AF MSS)(Southard, 1992).Thedisplayof digitized navigationalchartsiscentralt othefunctionof this system. TheDefenseMappi ngAgency(DMA), supplies digitizedchartsoncompact diskread-onlymemory (CDROM) media.Thesegeoreferenceddigitalim- agesaretermedEqualArc-secondRasterChart(ARC)DigitizedRasterGraphics( ADRG) (Defense Mappi ngAgency,1989).Itwasestimatedt hat AF MSS wouldneedon-line about 200 gigahytes (GB)ofADRGdata,initsrawform.Imagecompressionis onestrategyt hat willbeusedtoreducethiscostly storagerequirement.Thetechniquesaredescribed andevaluated,andasetofalgorithmst hat meetsthe goalssetbyAFMSSarepresented.AnANSI C sourcecodeforthesealgorithmsisprovided. Applications Themethodsselectedhavebroadapplicabilityto manyaut omat edmapping, charting,andgeodesy systems.Digitizedchartscanreplacepaperchartsin manydisplayapplications.Digitalmapping,remote sensingandanalysis,computer-aideddesignfor civil engineering,architecture,andenvironmentalanaly- sis,global positioning andnavigation,and geographi- cali nformat i onsystems(GIS),aresomeexamples. Digitizedchartimagesareusefulinmilitarymission planningandcommand, control,andcommuni- cations(C 3)systems. Imagecompressiontechniques Compressiontechniquescanbeclassifiedintotwo br oadcategories:lossless,andlossy.Losslessalgor- ithmsincludesuchwell-knowntechniquesasrun- length coding, quadtree coding, Huffman coding, and theLempei-Zivalgorithm,whichisusedbythe UNI Xcompr essutility(Welch,1984).Alossless algorithmreconstructscompresseddat aexactly toits originalstate.Thedegree ofcompression dependson thecontentof thedata.Ontypicalchart images, losslesstechniquescanachieveuptoabout a2 : 1compressionratio(theratiooftheoriginalimagesize tothecompressedimagesize).Tablelshowsthe compressionof selectedchartandsatelliteimages usingrun-length,Huffman, andLempel -Ai zcoding. I nsomesituations,however,thesecodingschemes increasedthesizeof theimages. Lossy algorithmsadmithighercompressionratios. Lossyalgorithmsincludedifferentialpulsecode modul at i on(DPCM), vector quantization(VQ),and thediscretecosinet ransform(DCT),whichisthe centraltechniqueinthepopul arJ PEGandMPEG standards(RabbaniandJones,1991).Lossyalgor- ithmswilldegradetheoriginalimagesomewhat, dependingontheimagecontent,theamount ofcompression,andthepropertiesofthealgorithm.In manysituations,however,somedegradationisper- missible.Thelossmaybevisuallyimperceptible. Theclassificationandcompressiontechniquest hatare presentedare appropriatefor display andanalysis of manytypesof scientificandengineeringimages. Thelossycharacterof thesealgorithms,however, wouldmaketheminappropriateforarchivaldat a storage,orforsituationst hat requirecompleteaccu- racy.IntheseinstancesIosslessalgorithmsmust be employed.For example,DigitalTerrainElevation Dat a(DTED)suppliedbytheDMAforhillyterrain in centralGermanycanbecompressedtoanaverage compressionratioof 1.7usingHuffmancoding,and 3.4 using Lempel-Ziv coding.It would be inappropri- atetousealossytechnique,becausethiswould 1213 1214D.A.SOUTHARD Table1.Compressionratiosforlossless compressionof selected images Lossless compressionmethod ImageSizeRunlengthHuffmanLempel-Ziv ONC5125120.971.060.99 TPC*1000 x10000.981.101.00 TPC500x5000.971.251.27 JOG1024 10241.021.121.12 TLM512x5120.981.111.06 SPOTt2391x22491.011.711.93 SPOT:~2391x22490.981.040.99 Unlessindicated,imageshavebeen spatiallyfilteredandsubsampled. *RawADRGimage. tRawpanchromatic image,withlittle contrast. ~Processedwithcontraststretch,andspatiallyfilteredtoremoveimaging artifacts. compr omi sethecharact erof thedat a. Arelief- shadedi m a g e of thesedat a, however,canbecom- pressed successfully using the met hods described here. V e c t o r q u a n t i z a t i o nVect orquant i zat i onisageneralmet hodt hat is usedextensivelyforappl i cat i onsinspeechcoding,i magecoding, segment at i on, classification,andrec- ogni t i onprobl ems. Therearemanyformsof VQ,as wellashybri dsof VQwithot her techniques(Abut ,1990;Rabbani andJones,1991).SeveralformsofVQ, al ongwithot her compressi onschemes,have beenpr oposedforcompressi ngdi gi t alchart s(Barad andMart i nez, 1989;Jai si mhaandothers, 1989; Lohr enzandothers, 1990;Pot l apal l i andothers, 1989;Pot l apal l i , Barad, andMart i nez, 1989).Inthis work, severalcompet i ngVQal gori t hmsweretested, eval uat i ngt hemwithanemphasi soni magequal i t y andprocessi ng speed,andthe best techniquesforthis appl i cat i onwereapplied.I n VQ, ani mage is di vi ded i nt osmall units,t ermed v e c t o r s . I nthiscontext, thet ermv e c t o r simply refers toann-t upl e; t hereisnogeomet ri ci nt erpret at i on.Thevect orscompri seagr oupof adj acent i mage pixels.Typi cal l y, avect orisasmallrect angul ar gr oupi ngof f r om2to25pixels.Suppose, fora moment , t hat wehaveapredefinedlistof vectors, namedt hec o d e b o o k . Tocompress, t heent ry is deter- mi nedinthecodebookt hat most closelymat ches eachvect orfromthei nput image.Inot her words,eachi magevect orisclassifiedi nt oacat egoryrep- resentedbyacodebookentry. Theindexof each ent r yissavedinthecompressedimage.Todecom- press,eachindexisusedtol ook- upavect orinthe codebookandreassembl etheimage.Vectorquan- t i zat i onhasseveralsalientcharacteristicst hat dis- t i ngui shi t f r omtheot her compressi onal gori t hms,andwhichmakeVQideallysuitedforaut omat ed mappi ngsystems: A s y m m e t r i c . Near l yallthecomput at i onassoci- at edwithcompressi onanddecompressi onfalls on thesideofcompressi on. Imagereconst ruct i onisa fastt abl el ook- upoperat i on. Most ot hercom- pressional gori t hmstendtorequireabout asmuch comput etimefordecompressi onasforcom- pression(cf.Rabbani andJones,1991). E f f i c i e n t . Thecompressi onstagecompri sestwo steps: codebook devel opment ,andthe compressi on itself.Oncethereisacodebookforaclassofimages,suchasforapar t i cul ar t ypeof chart , the codebookcanbereusedtocompressanyi magein t hat class.Al t houghcodebookdevel opment isin- tensive comput at i onal l y,compressi on is simple and quick. P r e d i c t a b l e . Thecompressi onrat i odoesnotchange from i mage toimage.The size ofthe vectors andthelengthof t hecodebookdet ermi net he amount of compression. Thispr oper t ysimpli- fiesdiskspacemanagement onaheavilyl oaded system. F l e x i b l e . Thedecompressi on canbet ai l ored tothe localresources,rangi ngfromaPCwithaSuper- VGAcard, toasupergraphicswor kst at i onwitha hi gh-resol ut i ondisplay. Thesamecompressedfile canbedecompressedforagray-scaledisplay, an 8-bit (256colors) l ook- upt abl edisplay,or a24-bit RGB(16.8mi l l i oncolors)display. Thi sadapt a-bi l i t y requires onl y t hat we modi f y the VQl ook- up t abl easappr opr i at e. Thereisnoneedtocompress theimagedifferentlyforeachsi t uat i on.R a n d o m - a c c e s s . Manyal gori t hmsrequiredecom- pressiontocont i nuefrombeginningtoendina predet ermi nedway.Themet hoddescri bedcan begin atany poi ntinthe compressedimage, andgo inanydirection.F i l t e r i n gDigitizedchart imagesmaycont ai ntwointerest- ing,but undesi rabl e, artifacts.Chart susuallyare pr i nt edusingonl yafewcol orsof ink.Int ermedi at e shadesarereproducedwiththehal f-t onepri nt i ng process,inwhichar r aysof tinydot sof inkreplicate i nt ermedi at etonesof color. Whendigitizedwithan opt i cal scanningprocess, thehal f-t onedareas appears t i p p l e d . Thestipplecanbestbedescribedasa Compressionof digitized mapimages1215 7Y vqntvqoo.pvq,xp@ vq' .p vq,n,,@ Figure1.Overview of vectorquantizationimage compression. salt-and-peppertextureinthebackgroundareas.The cart ographeroriginallyintendedtheseareastol ook likeaconst ant shadeof color. Thesecondartifactisaninteractionof thehalf- tone printingscreens withthe implicit arrayofoptical samples,whichproducesamoir# patterninthese areas.Thiseffectisunderst oodasabeatingof the spatialfrequencyof thepixelarrayagainstthoseofthehalf-tonescreens.Themoir6patterncanbe distinct. I f eitherof theseartifactsarepresent,theimage shouldbefilteredbeforecompression.Byfiltering beforecompression,stippleandmoir6canbeelimi- nated,andthelegibilityof thedecompressedimage increased.Filteringmaybeaccomplishedbyreplac- ingeachpixelbyaweightedaverageofpixelsinits immediatenei ghborhood, asdiscussedbyPratt (1991)orbyGonzalezandWintz(1987).Eight differentfiltersweretested,andthebestresultswere obtainedwithaseparable,piecewisecubicfilterofMitchellandNetravali(1988).Aseparablefilter responsefunctionintwodimensionsisF( x, y) = f (x)f (y), wherexandyrepresentthehorizontaland verticaldistancesfromasamplepoint,measuredin pixelintervalsfromthesamplepoint.Tofilter,the weightedsumofallpixelst hat fallwithinthefilter's radiusiscalculated,wheretheweightsaredeter- minedbythefilterresponsefunction,thenare normalizedbydividingbythesumof theweights. Separablefilterscanbeusedbot hforsubsampling andinterpolatingimages.Because they are calculated usinganalyticalfunctions,eitherintegralornon- integralsamplingfatorscanbeused.Theequation forMitchellandNetravali' sfamilyof cubicfilters is: whereB andCare parameterst hat define aparticular cubicspline.MitchellandNetravalirecommended thevalues(B,C)=(1, !) 3"Overview ofVQcompression Figure1illustratestheimagecompressionpro- cedure.Theimageisconvertedfromthedistribution mediatothelocalfilesystem.Afterfiltering,if needed,arepresentativesubset ofvectors is extracted, andassembledintoatrainingimage.Thecodebook developmentprogram, vqinit,analyzesthetraining imaget odetermineacodebook. Then,theprogram vqeompusesthecodebook tocompressoneormore imagesfromtheclassrepresentedbythetraining image.Asanoptionalseparatestep,vqinitgenerates acolortable,andvqcmapusesthecolortableto color-mapthecodebook. Thedecompressionpro- gram,vqexp(VQ-expand),takesthecodebookand the compressed image,andassemblesan image file. A displayprogram, specifictothelocalenvironment, readstheimage,andforcolor-mappedimages,also readsthecolortable,andwritestheimagetothe comput erdisplay. CODEBOOKDEVELOPMENT Thekey toVQis the methodby which acodebook isobtained.Thecodebookdeterminesthequalityofthereconstructedimage.Thecodebookislocatedby aprocesstermedclustering. Oneormoretraining imagesisanalyzedtolocateacodebookt hat will minimizeadistortionmeasureforthecompressed image.Thetrainingimagesrepresenttheclassofimagest obecompressedwiththecodebook. The 1 ((12-9B -6C) l xl3 +( - 18 +12B +6C) l xl2 +(6 -2B) f ( x) =g ~ ( - B -6C)1xl3 +(6B+30C)lxl2+ ( - 12B-48C)lxl+(8B+24C) ifIxl n o d e . s p l i t . i n d e x =-1; t r e e - > n o d e . s p l i t . l e f t =N U L L ;t r e e - > n o d e . s p i l t . r i g h t =N U L L ;b r e a k ;d e f a u l t :f p r i n t f (s t d e r r ,e x i t (E R R O R 1; }r e t u r n (t r e e 1; /*i n i t i a l i z e s p l l t n o d e * /E r r o r i s n e w n o d e : u n k n o w n n o d e t y p e \ n " ); / *. . . . . . . . . . . . . . . . . . . . . . * //*n e w c l u s t e r */ / * . . . . . . . . . . . . . . . . . . . . . . * /* n e w c l u s t e r (/*a l l o c a t e a n d I n l t an e w c l u s t e r * /l o n g h u m , /*n u m b e r o f v e c t o r s a c c u m u l a t e d */ l o n g e r r , /*t o t a l e r r o r I n c l u s t e r */ s h o r t * v e c t o r )/*p o i n t e r t o b l o c k o f s i z e c l u s t e r _ s l z e * /C l u s t e r *c;/*p o i n t e r t o n e w c l u s t e r * /c=( C l u s t e r *)m y a l l o c (s l z e o f ( C l u s t e r ) ) ;c - > n =h u m ;c - > e r r o r = e r r ;c - > a r r a y = ( s h o r t *)m y a l l o c (c l u s t e r _ s l z e *s l z e o f (s h o r t )1; m e m c p y (c - > a r r a y , v e c t o r , c l u s t e r _ s l z e *s i z e o f (s h o r t )1; n _ c l u s t e r s + + ;r e t u r n (c1; / *. . . . . . . . . . . . . . . . . . . . . . * //*m a t c h */ I *. . . . . . . . . . . . . . . . . . . . . . * I# d e f i n e N O T _ F O U N D (-11 l o n g m a t c h ( K D T r e es h o r t{r e g i s t e rr e g i s t e r* t r e e ,* v e c t o r ) /*s e a r c h b u c k e t f o r m a t c h l n g c l u s t e r * //*p o i n t e r t o b u c k e t n o d e * //*p o i n t e r t o v e c t o r t o m a t c h */ i; J ;/*o u t e r l o o p c o u n t e r : c l u s t e r i n d e x */ /*i n n e r l o o p c o u n t e r : v e c t o r e l e m e n t i n d e x */ f o r (I=0;inode.bucket.count;i + + ) {f o r (J=0;J n o d e . b u c k e t . c l u s t e r [ i] - > a r r a y [ J] v e c t o r [ J])b r e a k ;) i f (J= = c l u s t e r _ s l z e )r e t u r n (i); )r e t u r n ( N O T _ F O U N D ); I = / *. . . . . . . . . . . . . . . . . . . . . . * // * s p l i t * // * . . . . . . . . . . . . . . . . . . . . . . * /Compressionof digitizedmapimages1231 K D T r e e{* s p l i t ( K D T r e e * t r e e ) /*s p l i t ab u c k e t i n t o t w o p i e c e s */ r e g i s t e r i;/*l o o p v a r i a b l e */ r e g i s t e r il;/*l e f t b r a n c h c l u s t e r c o u n t e r */ r e g i s t e r Jr;/*r i g h t b r a n c h c l u s t e r c o u n t e r */ l o n g m a x i n d e x ; /*m a x r a n g e o r d i n a t e i n d e x * /l o n g m a x r a n g e ; /*m a x o r d i n a t e r a n g e */ K D T r e e * n e w t r e e ; /*n e w t r e e n o d e */ l o n g r a n g e ; /*c u r r e n t o r d i n a t e r a n g e * /l o n g t h r e s h o l d ; /*s p l i t t h r e s h o l d */ / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*F i n d t h e o r d i n a t e w i t h t h e g r e a t e s t v a r i a n c e * //, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,/ m a x i n d e x =0; m a x r a n g e =t r e e - > n o d e . b u c k e t . m a x [ 0]-t r e e - > n o d e . b u c k e t . m i n [ 0]; f o r (i=1;i n o d e . b u c k e t . m a x [ i]-t r e e - > n o d e . b u c k e t . m l n [ i]; i f (r a n g e >m a x r a n g e ) {m a x i n d e x =i; m a x r a n g e =r a n g e ;})1". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*I f c l u s t e r s a r e i d e n t i c a l , c o n d e n s e i n t o o n e */ /*c l u s t e r a n d r e t u r n i m m e d i a t e l y */ l *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " 1i f ( m a x r a n g e = = 0) {f o r (i=1;i n o d e . b u c k e t . c o u n t ;i + + ) {t r e e - > n o d e . b u c k e t . c l u s t e r [ 0] - > n + =t r e e - > n o d e . b u c k e t . c l u s t e r [ i]->n; t r e e - > n o d e . b u c k e t . c l u s t e r [ 0] - > e r r o r + =t r e e - > n o d e . b u c k e t . c l u s t e r [ i] - > e r r o r ;f r e e c l u s t e r (t r e e - > n o d e . b u c k e t . c l u s t e r [ i]); )t r e e - > n o d e . b u c k e t . c o u n t =I; r e t u r n (t r e e ); )/ *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*O t h e r w i s e , a l l o c a t e an e w s p l i t n o d e , * //*a n d t w o n e w b u c k e t n o d e s , i n i t i a l i z e * // *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * /t h r e s h o l d =(t r e e - > n o d e . b u c k e t . m a x [ m a x i n d e x ]+ t r e e - > n o d e . b u c k e t . m i n [ m a x i n d e x ])/2; n e w t r e e =n e w n o d e (S P L I T ); n e w t r e e - > n o d e . s p l l t . l n d e x =m a x l n d e x ;n e w t r e e - > n o d e . s p l i t . t h r e s h =t h r e s h o l d ;n e w t r e e - > n o d e . s p l i t . l e f t =n e w n o d e (B U C K E T ); n e w t r e e - > n o d e . s p l l t . r i g h t =n e w n o d e (B U C K E T ); / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*P a r t i t i o n s e x i s t i n g c l u s t e r s t o l e f t o r r i g h t */ /*b r a n c h e s a c c o r d i n g t o t h r e s h o l d t e s t . */ / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * /i l =i r =0; f o r (i=0;i n o d e . b u c k e t . c o u n t ;i + + ) {i f (t r e e - > n o d e . b u c k e t . c l u s t e r [ i] - > a r r a y [ m a x i n d e x ]> t h r e s h o l d ) {n e w t r e e - > n o d e . s p l i t . r l g h t - > n o d e . b u c k e t . c l u s t e r [ J r + + ]= n e w c l u s t e r ( t r e e - > n o d e . b u c k e t . c l u s t e r [ i]->n, t r e e - > n o d e . b u c k e t . c l u s t e r [ i] - > e r r o r ,t r e e - > n o d e . b u c k e t . c l u s t e r [ i] - > a r r a y ); )e l s e{n e w t r e e - > n o d e . s p l i t . l e f t - > n o d e . b u c k e t . c l u s t e r [ i f + + ]= n e w c l u s t e r ( t r e e - > n o d e . b u c k e t . c l u s t e r [ i]->n, 1232D,A.S O U T H A R Dt r e e - > n o d e . b u c k e t . c l u s t e r [ i] - > e r r o r ,t r e e - > n o d e . b u c k e t . c l u s t e r [ i] - > a r r a y ); }}n e w t r e e - > n o d e . s p l i t . l e f t - > n o d e . b u c k e t . c o u n t =il; n e w t r e e - > n o d e . s p l l t . r l g h t - > n o d e . b u c k e t . c o u n t =Jr; / * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * /I*R e s e t t h e m a x / m l n a r r a y s f o r b o t h b u c k e t s * // * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * /s e t m a x m i n ( n e w t r e e - > n o d e . s p l i t . l e f t ); s e t m a x m i n ( n e w t r e e - > n o d e . s p l i t . r i g h t ); I *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * I/*D e - a l l o c a t e b u c k e t n o d e , a n d */ /*r e t u r n n e w s p l i t n o d e . */ I *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , if r e e n o d e (t r e e ); r e t u r n ( n e w t r e e ); / *. . . . . . . . . . . . . . . . . . . . . . * //*a p p e n d */ / *. . . . . . . . . . . . . . . . . . . . . . * /v o i d a p p e n d ( K D T r e el o n gl o n gs h o r t{ * t r e e ,n u m ,err, * v e c t o r ) r e g i s t e r i;/*n e w c l u s t e r i n d e x */ i=t r e e - > n o d e . b u c k e t . c o u n t + + ;t r e e - > n o d e . b u c k e t . c l u s t e r [ i]=n e w c l u s t e r ( n u m , err,v e c t o r ); i f (i= = 0)/*b u c k e t w a s e m p t y */ ( )e l s e( /*a p p e n d o n e c l u s t e r t o b u c k e t */ /*p o i n t e r t o b u c k e t n o d e */ /*n u m b e r o f v e c t o r s r e p r e s e n t e d */ /*m a x s q u a r e d e r r o r f o r c l u s t e r */ /*v e c t o r t o b e a p p e n d e d */ s e t m a x m i n (t r e e );I*i n i t i a l i z e m a x l m l n a r r a y s *I /*u p d a t e m a x / m l n a r r a y s */ u p d m a x m i n (t r e e - > n o d e . b u c k e t . m a x , t r e e - > n o d e . b u c k e t . m i n ,v e c t o r ); / *. . . . . . . . . . . . . . . . . . . . . . * //*s e t m a x m i n */ / * . . . . . . . . . . . . . . . . . . . . . . * /v o i d s e t m a x m l n (I*s e t t h e m a x / m l n a r r a y s i n ab u c k e t *I K D T r e e * t r e e )/*p o i n t e r t o B u c k e t t y p e t r e e n o d e */ { r e g i s t e r i;/*l o o p c o u n t e r o v e r c l u s t e r s i n b u c k e t */ i f (t r e e - > n o d e . b u c k e t . c o u n t >0) { m e m c p y (t r e e - > n o d e . b u c k e t . m a x ,t r e e - > n o d e . b u c k e t . c l u s t e r [ 0] - > a r r a y ,c l u s t e r _ s i z e *s l z e o f (s h o r t )); m e m c p y (t r e e - > n o d e . b u c k e t . m i n ,t r e e - > n o d e . b u c k e t . c l u s t e r [ 0] - > a r r a y ,c l u s t e r _ s i z e *s l z e o f ( s h o r t )); f o r (i=i;i n o d e . b u c k e t . c o u n t ;i + + ) { u p d m a x m i n (t r e e - > n o d e . b u c k e t . m a x ,t r e e - > n o d e . b u c k e t . m i n ,t r e e - > n o d e . b u c k e t . c l u s t e r [ i] - > a r r a y ); ) / *. . . . . . . . . . . . . . . . . . . . . . * //*u p d m a x m l n */ I *. . . . . . . . . . . . . . . . . . . . . . * Iv o i d u p d m a x m l n ( s h o r t * m a x ,s h o r t * m i n ,s h o r t * v e c t o r ) /*u p d a t e t h e m a x / m i n a r r a y s i n ab u c k e t */ /*a r r a y o f m a x v a l u e s */ /*a r r a y o f m i n v a l u e s */ /*n e w c l u s t e r v e c t o r */ Compressionof digitizedmapimages1233 r e g i s t e r i ; / * l o o p i n g c o u n t e r * /f o r (i=0;ic o d e b o o k _ l e n ) ( t r e e =b a l a n c e (t r e e ); c a n d i d a t e s =( C a n d i d a t e *)m y a l l o c (nb u c k e t s * s i z e o f ( C a n d i d a t e ) ) ;nc a n d l d a t e s =f i n d _ c a n d i d a t e s (t r e e , c a n d i d a t e s )- c a n d i d a t e s ;q s o r t (c a n d i d a t e s , n _ c a n d l d a t e s , s i z e o f (C a n d i d a t e ), c o m p a r e _ c a n d l d a t e s ); n _ c a n d i d a t e s =n _ c l u s t e r s -c o d e b o o k _ l e n n o d e . s p l l t . r l g h t ;i f (t l - , t y p e = = B U C K E T & & t l - > n o d e . b u c k e t . c o u n t n o d e . b u c k e t . c l u s t e r [ i]; t r =i n s e r t (t r , c - > n , c - , e r r o r , c - > a r r a y ); ) t r e e - > n o d e . s p l l t . r l g h t =N U L L ;f r e e n o d e (t r e e ); t r e e =t r ;) e l s e i f (t r - > t y p e = = B U C K E T & & t r - > n o d e . b u c k e t . c o u n t n , c - > e r r o r , c - > a r r a y ); } t r e e - > n o d e . s p i l t . l e f t =N U L L ;f r e e n o d e (t r e e ); t r e e =tl; /*r e c u r s i v e d e s c e n t o f t r e e */ tree->node.spilt.left t r e e - > n o d e . s p l l t . r l g h t} } r e t u r n (t r e e ); =b a l a n c e (tl); =b a l a n c e (t r ); / *. . . . . . . . . . . . . . . . . . . . . . * //*f r e e n o d e */ I* . . . . . . . . . . . . . . . . . . . . . .*i v o i d f r e e n o d e (/*f r e e m e m o r y a l l o c a t e d f o r K D T r e e */ K D T r e e * t r e e )/*p o i n e r tot r e e */ { r e g i s t e r i;/*l o o p i n g c o u n t e r */ i f (t r e e ]=N U L L )s w i t c h (t r e e - > t y p e ) { c a s e B U C K E T :f o r (i=0;i n o d e . b u c k e t . c o u n t ;i + + ) { f r e e c l u s t e r (t r e e - > n o d e . b u c k e t . c l u s t e r [ i]); ) f r e e (t r e e - > n o d e . b u c k e t . c l u s t e r ); f r e e (t r e e - > n o d e . b u c k e t . m a x ); f r e e (t r e e - > n o d e . b u c k e t . m l n ); ' f r e e (tree); n _ b u c k e t s - - ;b r e a k ;c a s e S P L I T :f r e e n o d e (t r e e - > n o d e . s p l i t . l e f t ); f r e e n o d e (t r e e - > n o d e . s p i l t . r i g h t ); f r e e (t r e e ); b r e a k ;d e f a u l t :f p r l n t f (s t d e r r , ' E r r o r i n f r e e n o d e : u n k n o w n n o d e t y p e \ n " ); e x i t ( E R R O R ); ) / *. . . . . . . . . . . . . . . . . . . . . . * //*f r e e c l u s t e r * /i, . . . . . . . . . . . . . . . . . . . . . .,i v o i d f r e e c l u s t e r ( C l u s t e r * c l u s t e r ) { f r e e (c l u s t e r - > a r r a y ); f r e e (c l u s t e r ); n _ c l u s t e r s - - ;) / *. . . . . . . . . . . . . . . . . . . . . . * //*f i n d _ c a n d l d a t e s */ /* . . . . . . . . . . . . . . . . . . . . . .* /C a n d i d a t e * f l n d c a n d l d a t e s ( K D T r e e * t r e e ,C a n d i d a t e * c a n d ) { /*f r e e ac l u s t e r a r r a y * //*p o i n t e r t o c l u s t e r */ /*f i n d c a n d i d a t e c l u s t e r p a i r s */ /*t r e e t o s e a r c h */ /*p o i n t e r i n t o c a n d i d a t e a r r a y */ i f (t r e e = = N U L L ) ( f p r i n t f (s t d e r r , ' E r r o r i n f l n d _ c a n d i d a t e s : n u l l t r e e p o l n t e r \ n " ); e x i t ( E R R O R ); ) s w i t c h (t r e e - > t y p e ) { c a s e S P L I T :c a n d =f l n d _ c a n d l d a t e s (t r e e - > n o d e . s p i l t . l e f t , c a n d ); c a n d =f l n d _ c a n d i d a t e s (t r e e - > n o d e . s p i l t . r i g h t , c a n d ); b r e a k ;c a s e B U C K E T :i f (t r e e - > n o d e . b u c k e t . c o u n t >i) { c a n d - > p t r =t r e e ;Compressionof digitized mapimages 1235 c a n d - > e r r =c a n d i d a t e (t r e e , & c a n d - > n o l , & c a n d - > n o 2 ); c a n d + + ;)b r e a k ;d e f a u l t :f p r l n t f (s t d e r r , " E r r o r i n f l n d _ c a n d l d a t e s : u n k n o w n t r e e t y p e \ n " ); e x i t (E R R O R ); )r e t u r n (c a n d );I*r e t u r n p o i n t e r t o n e x t e m p t y s l o t * //*c a n d i d a t e */ / * . . . . . . . . . . . . . . . . . . . . . . * /l o n g c a n d i d a t e (/*f i n d i n d e x o f c a n d i d a t e f o r b u c k e t * /K D T r e e * t r e e , /*b u c k e t n o d e o f t r e e * /l o n g * m i n i , /*i n d e x o f f i r s t i n c a n d i d a t e p a i r * /l o n g * m l n J )/*i n d e x o f s e c o n d i n c a n d i d a t e p a i r * I{r e g i s t e r C l u s t e r **c;/*c l u s t e r p o i n t e r a r r a y * /r e g i s t e r i;/*l o o p i n g i n d e x * /r e g i s t e r J;/*l o o p i n g i n d e x * /r e g i s t e r i;/*l o o p i n g l i m i t * /r e g i s t e r 11;/*l o o p i n g l i m i t -1* /l o n g m l n e r r ; /*m i n i m u m e r r o r e n c o u n t e r e d * /l o n g e r r o r ; /*c u r r e n t e r r o r */ c=t r e e - > n o d e . b u c k e t . c l u s t e r ; /*p o i n t e r t o c l u s t e r */ 1=t r e e - > n o d e . b u c k e t . c o u n t ; /*l e n g t h o f c l u s t e r */ i i =1-I;/*l e n g t h m i n u s o n e */ m l n e r r =L O N G _ M A X ; /*ag i a n t n u m b e r * /f o r (i=0;i# i n c l u d e < l i m l t s . h ># i n c l u d e < m a t h . h >/*s t a n d a r d I/Of u n c t i o n d e f i n i t i o n s */ /*c o n t a i n s MAX_INT,etc.*I /*m a t h f u n c t i o n s l o g (),etc.*/ / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*M A N I F E S T C O N S T A N T S */ / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * /# d e f i n e B I T S 8 # d e f i n e B U C K E T S I Z E 8 # d e f i n e E R R O R (-i) # d e f i n e F A L S E 0 # d e f l n e M I N A R G S 3 # d e f i n e N O R M A L 0 # d e f i n e T R U E (]FALSE) I*n u m b e r ofb i t s p e r b y t e */ I*n u m b e r o f v e c t o r s p e r b u c k e t */ /*e r r o r r e t u r n code*/ /*logicalF A L S E */ /*mln.n u m b e r ofa r g u m e n t s r e q u i r e d */ /*normalr e t u r n code*/ /*logicalT R U E */ / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*D A T A S T R U C T U R E S */ /*V e c t o r Q u a n t i z a t l o n C o d e b o o k */ I *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * It y p e d e f u n s i g n e d c h a r uchar;I*ensureu n s i g n e d for p o r t a b i l i t y *I t y p e d e f s t r u c tl o n g index; u c h a r *vector; }Code; /*s t r u c t u r e d e f i n i n g asinglecode*/ /*i n d e x ofthec o d e */ /*p o i n t e r tocodev e c t o r */ t y p e d e f s t r u c t{ l o n g num; C o d e *book; C o d e B o o k ;/*s t r u c t u r e d e f i n i n g ab o o k ofc o d e s */ /*n u m b e r ofcodev e c t o r s inc o d e b o o k */ /*p o i n t e r toac o l l e c t i o n ofC o d e s */ # d e f i n e CODE(J) # d e f i n e V A L U E ( J , I )( c o d e b o o k . b o o k [ J ] . v e c t o r )(CODE(J)[I]) / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*S t r u c t u r e s forK - d treeu s e d inP N N s e a r c h a l g o r i t h m */ /, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*i t y p e d e f e n u m { BUCKET,S P L I T ) t y p e d e f s t r u c t s p i l t _ n o d e{ l o n g disc; l o n g part; s t r u c t k d _ n o d e *left; s t r u c t k d _ n o d e *right; )Split; t y p e d e f s t r u c t k d _ D o d e{ No d e T y p e type; u n i o n{ Splitsplit; c o d e B o o k bucket; }node; NodeType; /*s t r u c t u r e ford e c i s i o n n o d e s */ /*i n d e x ofd i s c r i m i n a t o r c o o r d i n a t e */ /*p a r t i t i o n v a l u e ford i s c r i m i n a t o r */ /*for v e c t o r s t h r e s h o l d */ /*s t r u c t u r e forK - D treen o d e s */ /*oneoftwot y p e s */ /*d e c i s i o n n o d e *I /*d a t a n o d e *I }KDTree; / * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*F U N C T I O N P R O T O T Y P E S */ / * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * /l o n g b o b ( u c h a r *); Compressionof digitized mapimages 1239 K D T r e el o n gint l o n gl o n gv o i dl o n gK D T r e eK D T r e eC o d eC o d e B o o kl o n gC o d e B o o kC o d e B o o kl o n g*build__tree( C o d e B o o k ); b w b ( u c h a r *); c m p r ( C o d e *,C o d e *); d i s c r i m ( C o d e B o o k ); d l s t ( long,u c h a r *,u c h a r *); get__args( int,char**); m e d i a n o f ( long,C o d e B o o k ); * n e w b u c k e t ( C o d e B o o k ); * n e w s p l l t ( long,long,K D T r e e *,K D T r e e *); * m a t c h ( u c h a r *,K D T r e e *); r d _ c o d e s ( F I L E *); s e a r c h ( u c h a r *,K D T r e e *); s p l i t _ l e f t ( long,C o d e B o o k ); s p l i t _ r l g h t ( long,C o d e B o o k ); s p r e a d o f ( long,C o d e B o o k ); / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r . . . . . . . . . . . . . . . . . . * //*G L O B A L D A T A */ / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * /l o n gl o n gF I L Eu c h a rC o d el o n gl o n gl o n gl o n gl o n gu c h a rl o n gb l o c k _ h e i g h t ; I*h e i g h t ofv e c t o r b l o c k */ b l o c k _ w l d t h ; /*w i d t h ofv e c t o r b l o c k */ *codef;/*c o d e b o o k inputfiles t r e a m */ *lower;/*lowerb o u n d s fors e a r c h */ *matched;/*p o i n t e r tom a t c h e d c o d e */ nearest;/ * i n t e r i m n e a r e s t c o d e m a t c h i n d e x */ n_cols;/*n u m b e r ofc o l u m n s ininputi m a g e */ n_rows;/*n u m b e r ofrowsininputimage*/ p i x e l _ d e p t h ; /*sizeofp i x e l */ serno;/*c o d e b o o k serialn u m b e r */ *upper;/*u p p e r b o u n d s fors e a r c h */ v e c t o r slze;/*sizeofcodev e c t o r */ / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * // *P R O G R A M * / I *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * Im a i n ( ( /*VQc o m p r e s s i o n */ intargc,/*a r g u m e n t count*/ c h a r *argv[])/*a r g u m e n t v e c t o r *I C o d e B o o k codebook;/*thec o d e b o o k */ l o n g code_width;/*w i d t h inb y t e s ofav e c t o r b l o c k */ u c h a r *cvq;/*(uchar)c o m p r e s s e d r o w b u f f e r */ r e g i s t e r l o n g i;/*v e c t o r b l o c k r o w i n d e x */ u c h a r **image;/*rowsofinputimage*/ r e g i s t e r l o n g J;/*v e c t o r b l o c k c o l u m n i n d e x */ r e g i s t e r l o n g k;/*p i x e l b y t e (depth)i n d e x */ r e g i s t e r l o n g I;/*p l x e l b y t e (depth)i n d e x */ l o n g n_bytes;/*b y t e s ininputimager o w */ r e g i s t e r u c h a r *pl;/*p o i n t e r intoi m a g e b u f f e r */ r e g i s t e r u c h a r *pv;/*p o i n t e r intov e c t o r b u f f e r */ r e g i s t e r short*pvq;/*p o i n t e r intoc o m p r e s s e d r o w b u f f e r */ s h o r t *svq;/*(short)c o m p r e s s e d r o w b u f f e r */ K D T r e e *tree;/*thek - d s e a r c h tree*/ u c h a r *v;/*v e c t o r b u f f e r */ l o n g x;/*ximagei n d e x */ l o n g xsize;/*xsizeofc o m p r e s s e d image*/ l o n g y;/*yimagei n d e x */ l o n g yslze;/*ysizeofc o m p r e s s e d image*/ l o n g zsize;/*zsize(depth)ofC o m p r e s s e d i m a g e */ / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*getc o m p r e s s i o n p a r a m e t e r s */ I * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * Ig e t _ a r g s ( a r g c , a r g v );/*c o m m a n d - l l n e a r g u m e n t s */ c o d e b o o k = r d _ c o d e s ( c o d e f );/*c o d e b o o k */ t r e e =b u i l d _ t r e e ( c o d e b o o k );/*m a k e as e a r c h tree*/ / * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*c a l c u l a t e d e r i v e d p a r a m e t e r s */ I *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * Ix s l z e =n _ c o l s /b l o c k _ w l d t h ; /*c o m p r e s s e d c o l u m n s */ y s l z e =n _ r o w s /block__height;/*c o m p r e s s e d rows*/ zsize=( log( ( d o u b l e ) c o d e b o o k . n u m )/l o g (2.0)+BITS-1)/BITS; /*b y t e s p e r c o d e */ n _ b y t e s =p l x e l _ d e p t h *n_cols;/*sizeofi m a g e r o w b u f f e r */ c o d e _ w l d t h =p l x e l _ d e p t h *b l o c k _ w l d t h ; /*b y t e w i d t h ofab l o c k */ I *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * I/*w r i t e o u t p u t fileh e a d e r i n f o */ / * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * /1240D. A. S o u T ~c h a rf w r l t e ( & e e r n o , s i z e o f (l o n g ),i,s t d o u t );/*s e r i a l n u m b e r * /f w r l t e ( & x s l z e , s l z e o f (l o n g ),I,s t d o u t );/*n u m b e r o f c o l u m n s * /f w r l t e ( & y s l z e , s l z e o f (l o n g ),1,s t d o u t );/*n u m b e r o f r o w s * /f w r i t e (& z s l z e , s l z e o f (l o n g ),1,s t d o u t );/*b y t e s p e r c o d e */ / * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * /I*a l l o c a t e b u f f e r m e m o r y *I I *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * Iv=( u c h a r *)m a l l o c ( v e c t o r _ s i z e *s l z e o f ( u c h a r ) ) ;u p p e r =( u c h a r *)m a l l o c ( v e c t o r _ s l z e *s l z e o f ( u c h a r ) ) ;l o w e r =( u c h a r *)m a l l o c ( v e c t o r _ s l z e *s l z e o f ( u c h a r ) ) ;8 v q =( s h o r t *)m a l l o c ( x s i z e *s i z e o f ( s h o r t ) ) ;c v q =( u c h a r *)m a l l o c ( x s l z e *s l z e o f ( u c h a r ) ) ;i m a g e =( u c h a r **)m a l l o c ( b l o c k _ h e l g h t *s l z e o f ( u c h a r *)); f o r (i=0;i v e c t o r [ k e y ]); /*f i n d i n d e x o f m e d i a n v a l u e */ I*d i s c r i m i n a t o r c o o r d i n a t e i n d e x */ /*p o i n t e r t o c o d e b o o k * //*i n d e x o f m e d i a n */ k e y =d;I*s o r t o n k e y i n d e x e d b y d i s c r i m . *I q s o r t (c o d e b o o k . b o o k , c o d e b o o k . n u m , s l z e o f ( C o d e ),c m p r ); m=c o d e b o o k . n u m /2+i;/*n o m i n a l i n d e x o f m e d i a n */ w h i l e ( m>0& & V A L U E ( m,d)= = V A L U E ( m-I,d)) {m - - ; /*d e c r e m e n t w h i l e v a l u e s a r e e q u a l */ )r e t u r n ( m-1);/*-i=n o s p l i t p o s s i b l e */ / *. . . . . . . . . . . . . . . . . . . . . . * //*n e w s p l l t */ I *. . . . . . . . . . . . . . . . . . . . . . * IK D T r e e * n e w s p l l t ( l o n g d, l o n g p, K D T r e e * l e f t ,K D T r e e * r i g h t ) {K D T r e e * t r e e ;t r e et r e e - > t y p et r e e - > n o d e . s p l i t . d l s ct r e e - > n o d e . s p i l t . p a r tt r e e - > n o d e . s p i l t . l e f tt r e e - > n o d e . s p l l t . r l g h tr e t u r n (t r e e ); /*r e t u r n s n o n - t e r m i n a l k - d t r e e n o d e */ /*d i s c r i m i n a t o r i n d e x */ /*p a r t i t i o n v a l u e f o r d i s c r i m i n a t o r */ /*l e f t s u b - t r e e */ /*r i g h t s u b - t r e e * //*p o i n t e r t o n e w k - d t r e e n o d e */ =( K D T r e e *)m a l l o c (8 i z e o f (* t r e e )); =S P L I T ;=d; =p; =l e f t ;=r i g h t ;/ *. . . . . . . . . . . . . . . . . . . . . . * //*s p i l t _ l e f t */ / *. . . . . . . . . . . . . . . . . . . . . . * /C o d e B o o k s p i l t _ l e f t (/*r e t u r n l e f t p a r t i t i o n */ l o n g pl,/*i n d e x o f p a r t i t i o n * /1244D. A. SOUTHAgD C o d e B o o k c o d e b o o k )/*c o d e b o o k */ C o d e B o o k l e f t ; /*t h e l e f t p a r t i t i o n */ l e f t . n u m =p i +i; l e f t . b o o k =c o d e b o o k . b o o k ;r e t u r n (l e f t ); /*n u m b e r o f c o d e s */ /*p o i n t e r t o c o d e s * //*s p l l t r l g h t */ / *. . . . . . . . . . . . . . . . . . . . . . * /C o d e B o o k s p i l t _ r i g h t ( l o n g pl, C o d e B o o k c o d e b o o k ) {C o d e B o o k r i g h t ;/*r e t u r n r i g h t p a r t i t i o n */ /*i n d e x o f p a r t i t i o n */ /*c o d e b o o k */ /*t h e r i g h t p a r t i t i o n */ r l g h t . n u m =c o d e b o o k . n u m -p l -I; r l g h t . b o o k =c o d e b o o k . b o o k +p i +I; r e t u r n (r i g h t ); /*n u m b e r o f c o d e s * //*p o i n t e r t o c o d e s */ / *. . . . . . . . . . . . . . . . . . . . . . * //*s e a r c h */ / *. . . . . . . . . . . . . . . . . . . . . . * /l o n g s e a r c h ( u c h a r v e c t o r [ ] ,K D T r e e * t r e e ) {i f (t r e e - > t y p e = = B U C K E T ) {)e l s e{/*r e c u r s l v e s e a r c h t h r u k - d tree*/ /*v e c t o r t o b e m a t c h e d */ /*t r e e t o b e t r a v e r s e d * //*c h e c k a l l c o d e s i n b u c k e t */ r e g i s t e r C o d e *c;/* r e g i s t e r i;/* r e g i s t e r J;/* r e g i s t e r m a t c h e s ; / *r e g i s t e r sum;/* c o d e p o i n t e r */ c o d e l o o p i n d e x */ c o o r d i n a t e l o o p i n d e x * /l o g i c a l p r e d i c a t e */ p a r t i a l d i s t a n c e s u m */ c=t r e e - > n o d e . b u c k e t . b o o k ;f o r (i=0;i n o d e . b u c k e t . n u m ;i++,c + + ) {s u m =d i s t (0,v e c t o r , c - > v e c t o r ); f o r (J=1; ( m a t c h e s =s u m n o d e . s p l i t . d l s c ;p=t r e e - > n o d e . s p i l t . p a r t ;i f ( v e c t o r [ d]< = p) {/*g e t d i s c r i m i n a t o r i n d e x */ /*g e t p a r t i t i o n v a l u e */ /*s e a r c h l e f t s u b t r e e */ t e m p =u p p e r [ d]; u p p e r [ d]=p; /*s a v e u p p e r b o u n d */ /*n e w u p p e r b o u n d */ d o n e =s e a r c h ( v e c t o r , t r e e - > n o d e . s p l i t . l e f t ); i f ( d o n e )r e t u r n d o n e ;u p p e r [ d]=t e m p ;t e m p =l o w e r [ d]; l o w e r [ d]=p; /*r e s t o r e u p p e r b o u n d */ /*s a v e l o w e r b o u n d * //*n e w l o w e r b o u n d * /i f ( b o b ( v e c t o r ))/*b o u n d s o v e r l a p b a l l ? */ {d o n e =s e a r c h ( v e c t o r , t r e e - > n o d e . s p l i t . r l g h t ); i f ( d o n e )r e t u r n d o n e ;)Compressionof digitizedmapimages1245 } e l s e{ l o w e r [ d]=t e m p ;t e m p =l o w e r [ d]; l o w e r [ d]=p; d o n e =s e a r c h ( v e c t o r ,i f ( d o n e )r e t u r n d o n e ;l o w e r [ d]=t e m p ;t e m p =u p p e r [ d]; u p p e r [ d]=p; i f ( b o b ( v e c t o r )) { /*r e s t o r e l o w e r b o u n d */ /*s e a r c h r i g h t s u b t r e e */ /*s a v e l o w e r b o u n d */ /*n e w l o w e r b o u n d * /t r e e - > n o d e . s p l i t . r i g h t ); /*r e s t o r e l o w e r b o u n d */ /*s a v e u p p e r b o u n d */ /*n e w u p p e r b o u n d */ /*b o u n d s o v e r l a p b a l l ? * /d o n e =s e a r c h ( v e c t o r , t r e e - > n o d e . s p i l t . l e f t ); i f ( d o n e )r e t u r n d o n e ;) u p p e r [ d]=t e m p ; /*r e s t o r e u p p e r b o u n d */ } ) r e t u r n ( b w b ( v e c t o r )); / *. . . . . . . . . . . . . . . . . . . . . . * //*m a t c h * //* . . . . . . . . . . . . . . . . . . . . . .*/ v e c t o r [ ] ,* t r e e ) i; C o d e * m a t c h ( u c h a rK D T r e e{ r e g i s t e rm a t c h e d =N U L L ;n e a r e s t =I N T _ M A X ;f o r (i=0;iProgram L~ting F I L E : v q e x p . cP U R P O S E : D e c o m p r e s s ( e x p a n d ) V Q c o m p r e s s e d i m a g e f i l e s .U S A G E : v q e x p < c o d e b o o k > [ i n p u t . v q ] [ o u t p u t . i m a g e ]A R G U M E N T S :c o d e b o o k : n a m e o f c o d e b o o k file,c r e a t e d b y v q i n i ti n p u t . v q = n a m e o f V Q - c o m p r e s s e d i m a g e f i l e ( s t d i n )[o u t p u t . i m a g e :n a m e o f d e c o m p r e s s e d i m a g e f i l e ( s t d o u t )L A N G U A G E : A N S I C,M I P S Cc o m p i l e r v e r s i o nA U T H O R = D a v i d A.S o u t h a r d , T h e M I T R E C o r p o r a t i o nC R E A T E D : 12N o v 1 9 9 1N O T E S / W A R N I N G S :/*s t a n d a r d I / O l i b r a r y d e f i n i n t i o n s */ /*M A N I F E S T C O N S T A N T S */ /* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . */ # d e f i n e E R R O R (-i)/*e r r o r r e t u r n s t a t u s c o d e * /# d e f i n e M I N A R G S 1/*v a l i d m i n i m u m n u m b e r o f a r g u m e n t s */ # d e f i n e N O R M A L 0/*n o r m a l r e t u r n s t a t u s c o d e */ I* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . *I /*F U N C T I O N P R O T O T P Y E S */ I* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . *I t y p e d e f u n s i g n e d c h a r u c h a r ; /*e n s u r e u n s l g n e d f o r p o r t a b i l i t y */ v o i d g e t _ a r g s (i n t , c h a r **); u c h a r * r d _ c o d e s (F I L E *); Compressionof digitizedmapimages1247 / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * !/*G L O B A L V A R I A B L E S */ ! *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1l o n g c o d e b o o k _ l e n g t h ; /*n u m b e r ofcodesinc o d e b o o k *! F I L E *coder;/*filep o i n t e r forthec o d e b o o k */ l o n g b l o c k _ h e i g h t ; !*v e c t o r b l o c k h e i g h t *! l o n g b l o c k _ w l d t h ; !*v e c t o r b l o c k w i d t h *! l o n g p i x e l _ d e p t h ; /*b y t e s p e r pixel*/ l o n g serial;/*serialn u m b e r ofc o d e b o o k */ l *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " 1/*P R O G R A M */ ! *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * !1"V Q d e c o m p r e s s i o n */ intargc,/*argumentcount*! c h a r * * a r g v )!*argumentlist*/ u c h a r "*codebook;/*c o d e b o o k ford e c o m p r e s s i o n *! l o n g c o d e _ w l d t h ; /*w i d t h ofonev e c t o r r o w */ l o n g c o d e 81ze;/*numberofb y t e s inav e c t o r */ r e g i s t e r i;/*v e c t o r b l o c k r o w i n d e x *! u c h a r **image;/*a r r a y ofp o i n t e r s toi m a g e rows*/ r e g i s t e r J;/*v e c t o r b l o c k c o l u m n i n d e x */ r e g i s t e r k;/*v e c t o r b l o c k b y t e i n d e x */ r e g i s t e r i;/*i n d e x intoimagerows*/ l o n g n_cols;!*n u m b e r ofcolsine x p a n d e d i m a g e */ r e g i s t e r u c h a r *pi;!*p o i n t e r intoani m a g e r o w */ r e g i s t e r u c h a r *pv;!*p o i n t e r intoacodev e c t o r */ l o n g serno;/*c o m p r e s s e d images e r i a l n u m b e r */ short*svq;/*(short)a r r a y ofc o d e s b u f f e r *! u c h a r *cvq;/*(uchar)a r r a y ofc o d e s b u f f e r */ l o n g x;!*c o m p r e s s e d imagec o l u m n i n d e x */ l o n g xslze;/*n u m b e r ofcolsinc o m p r e s s e d image*/ l o n g y;/*c o m p r e s s e d imager o w i n d e x */ l o n g ysize;/*numberofrowsinc o m p r e s s e d i m a g e */ l o n g zsize;!*n u m b e r ofb y t e s p e r c o d e i n d e x */ m a i n ( {/ *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * //*R e a d a r g u m e n t s a n d c o d e b o o k s */ / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * !g e t _ a r g s ( argc,a r g v );/*c o m m a n d - l l n e a r g u m e n t s */ c o d e b o o k =rd__codes( c o d e f );/*getc o d e b o o k fromfile*/ 1 ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * l/*R e a d c o m p r e s s e d imageh e a d e r info*! / *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * !f r e a d ( &serno,s i z e o f ( l o n g ),i,stdin);/*serialn u m b e r *! f r e a d ( &xsize,s l z e o f ( l o n g ),1,stdin);/*n u m b e r ofc o l u m n s */ f r e a d ( &yslze,s i z e o f ( l o n g ),1,s t d l n );!*n u m b e r ofrows*! f r e a d ( &zsize,s i z e o f ( l o n g ),1,stdin);!*b y t e s p e r code*! if( s e r n o I=serial)/*v e r i f y serialn u m b e r s */ { f p r i n t f ( stderr, %s:c o d e b o o k i n c o n s i s t e n t w i t h c o m p r e s s e d imagelkn', argv[0]); exit( E R R O R ); ) l *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * l!*A l l o c a t e b u f f e r m e m o r y "1 l *. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * ln _ c o l s =x s i z e *block_.width;/*bytesa c r o s s c o l u m n */ c o d e _ w l d t h =b l o c k _ w l d t h *p i x e 1 _ d e p t h ; /*b y t e s a c r o s s b l o c k */ c o d e _ s l z e =c o d e _ w l d t h *b l o c k _ h e i g h t ; !*b y t e s e n t i r e b l o c k */ i m a g e =(uchar**)m a l l o c (b l o c k _ h e l g h t *sizeof(uchar*)); for( i=0;i


Recommended