Home

the report here

image

Contents

1. oooccccconocccccononccononnnoss 23 Element names ein An die ada aaa isa 23 REPOlted POPE ii an E 23 TOS Ain dond suelo d bastante E AEE e E E ness 23 6 11 Resolution box child of JP2 Header box superbox oooccccococccccononcconononoss 24 A NT NN NO 24 REO PO aa 24 EA ONO NN E 24 6 12 Capture Resolution box child of Resolution box 24 Element NAM E crac A A A E A San 24 Reported properties e eaii a e a ei e asana e a aa ieta 24 MOSES E O E ET ILL 25 6 13 Default Display Resolution box child of Resolution box 25 Elementinamern n a a E nennen ende DA era arene 25 Rep rted pr perties 2 202 A ine airline Ras 26 A A ney ssnecese sidcmedecdie Coseseesesdyeteassbeedivesdesdsaredatesaeoeettaasees 26 6 14 Contiguous Codestream bot aa le 26 6 15 Intellectual Property bOX soria str ee 27 6 16 AMLO ibn 27 617 UUDboX re ii 27 6 18 UUID Info box IsUperb Naar 27 6 19 UUID List box child of UUID Info boOx cccnnnononccncnncconinananananonanicinananano 27 6 20 URE box child of UUID Info box si ai aa 27 6 21 Top level tests and properties ccccononoooonnncnncnnnononannnnnnnonnnnnnnonnnnonnnnnonannnos 27 Element NAME RURSH NANO 27 REpOrted Properties A n 27 A E E TEE NN NN 28 7 Contiguous Codestream DOX ooooonnnccccnnncncnnnnnnnonnncnnnnnnnnnnnnnnananoss 31 7 1 General codestream Structure usina cai diana 31 Markers and marker SCQMENHS cccccesssccececessessecececece
2. SCAPE Scalable Preservation Environments jpylyzer validator and properties extractor for JPEG 2000 Part 1 JP2 User Manual Author Johan van der Knijff KB National Library of the Netherlands This work was partially supported by the SCAPE Project The SCAPE project is co funded by the European Union under FP7 ICT 2009 4 1 Grant Agreement number 270137 This work is licensed under a CC BY SA International License Disclaimer Both the program code and this manual have been carefully inspected before printing However no warranties either expressed or implied are made concerning the accuracy completeness reliability usability performance or fitness for any particular purpose of the information contained in this manual to the software described in this manual and to other material supplied in connection therewith The material is provided as is The entire risk as to its quality and performance is with the user Table of Contents 1 galo e ee ee 1 EL Aboutjpylyzern san ee ee 1 1 2 Validation scope and restrictions ooocccccononooncnnnnononononononnnnnnnnnnonnnnononnos 1 Valid means probably valid esnai eae ecard iaa 1 No check on compressed DitstreaM S iii inca oia alerts HD ENTRE 1 Recommendations for use in quality assurance workflows ccconooocccnncnncononannnnnnnnononnnnnancnnccnnnnn nos 2 Note ON ICC profile UPA sabes 2 1 3 Outline of this User Manual aii nr laa 2 WA CEN MN pun
3. If gStyle equals 1 scalar derived Epsilon exponent in Eq E 3 of ISO IEC 15444 1 If gStyle equals 2 scalar expounded Epsilon exponent in Eq E 3 of ISO IEC 15444 1 repeated for all decomposition levels order low to high If gStyle equals 1 scalar derived mu constant in Eq E 3 of ISO IEC 15444 1 if gStyle equals 2 scalar expounded mu constant in Eq E 3 of ISO IEC 15444 1 repeated for all decomposition levels order low to high True if Iqcd is within range 4 197 qStyle equals O no quantization 1 scalar derived or 2 scalar expounded 40 7 8 Comment COM marker segment child of Contiguous Codestream box Element name com Reported properties Property Icom rcom comment Tests Test name IcomlsValid rcomlsValid Note on support of Latin encoding Description Length of COM marker segment in bytes Registration value of marker segment indicates whether this comment contains binary data or text Embedded comment as text only if rcom 1 True if Iqcd is within range 5 65535 rcom equals 0 binary or 1 ISO IEC 8859 15 Latin The standard defines that comments use the ISO IEC 8859 15 Latin character set if rcom 1 The current version of jpylyzer uses an ASCII encoding for its output and this doesn t support some of the ISO IEC 8859 15 characters including accented characters which are common in e g French and Germa
4. Number of components Indicates whether image component is signed or unsigned repeated for each component Number of bits for this component repeated for each component Horizontal separation of sample of this component with respect to reference grid repeated for each component Vertical separation of sample of this component with respect to reference grid repeated for each component 36 Tests Test name IsizlsValid rsizlsValid xsizlsValid ysizlsValid xOsizlsValid yOsizlsValid xTsizlsValid yTsizlsValid xTOsizlsValid yTOsizlsValid csizlsValid IsizConsistentWithCsiz ssizlsValid xRsizlsValid yRsizlsValid True if Isiz is within range 41 49190 rsiz equals 0 ISO IEC 15444 1 1 Profile 0 or 2 Profile 1 xsiz is within range 19 1 ysiz is within range 11 2 1 xOsiz is within range 0 2 2 yOsiz is within range 0 29 2 xTsiz is within range 1 2 1 yTsiz is within range aoe 1 xTOsiz is within range 10 2 2 yTOsiz is within range 102 2 csiz is within range 1 16384 Isiz equals 38 3 csiz ssizDepth is within range 1 38 repeated for each component xRsiz is within range 1 255 repeated for each component yRsiz is within range 1 255 repeated for each component 37 7 6 Coding style default COD marker segment child of Contiguous Codestream box Element name cod Reported properties Property Icod precincts sop eph orde
5. Properties from UUID box optional uuidinfoBox section 6 18 Properties from UUID Info box optional Tests The tests that jpylyzer performs at the root level fall in either of the following two categories 1 Tests for the presence of required top level boxes the order in which they appear and restrictions on the number of instances for specific boxes 28 2 Tests for consistency of information in different parts of the file In particular a lot ofthe information in the Image Header box is redundant with information in the codestream header and jpylyzer performs a number of tests to verify the consistency between these two Test name containsSignatureBox containsFileTypeBox containsJP2HeaderBox containsContiguousCodestreamBox containsIntellectualPropertyBox firstBoxlsSignatureBox secondBoxlsFileTypeBox locationJP2HeaderBoxlsValid noMoreThanOneSignatureBox noMoreThanOneFileTypeBox noMoreThanOneJP2HeaderBox heightConsistentWithSIZ widthConsistentWithSIZ nCConsistentWithSIZ bPCSignConsistentWithSIZ bPCDepthConsistentWithSIZ True if File root contains a JPEG 2000 Signature box File root contains a File Type box File root contains a JP2 Header box File root contains a Contiguous Codestream box File root contains an Intellectual Property box which is required if iPR field in Image Header Box equals 1 test is skipped otherwise First box is JPEG 2000 Signature box Second box is File Type box JP2
6. and redirects the output to file rubbish xml jpylyzer py rubbish jp2 gt rubbish xml Multiple images redirected output not well formed XML It is important to point out here that jpylyzer creates a separate XML tree for each analysed image and there is no overarching hierarchy If you use a pathname expression to process multiple images and redirect the output to a file the resulting file will not be a well formed XML document An example jpylyzer py jp2 gt rubbish xml In this case the output for all jp2 files in the directory is redirected to the file but the file will contain a succession of XML trees which by itself is not well formed XML 3 3 Using jpylyzer as a Python module To be written 4 Structure of a JP2 file 4 1 Scope of this chapter This chapter gives a brief overview of the JP2 file format A basic understanding of the general structure of JP2 is helpful for appreciating how jpylyzer performs its validation It will also make it easier to understand jpylyzer s extracted properties as these are reported as a hierarchical tree that corresponds to the internal structure of JP2 For an exhaustive description of every detail of the format you are advised to consult Annex JP2 file format syntax and Annex A Codestream syntax of ISO IEC 15444 1 4 2 General format structure At the highest level a JP2 file is made up of a collection of boxes A box can be thought of as the fundamental bu
7. in this box 3 The box contents which contains the actual information within the box Its internal format depends on the box type The box contents of a superbox will contain its child boxes which can be parsed recursively In some cases a box will also contain an extended box length field This field is needed if the size of a box exceeds 2 7 1 bytes which is the maximum value that can be stored in the 4 byte box length field LBox Box length TBox Box type XLBox Box extended length DBox Box content variable length Figure 4 2 General structure of a box based on Figure 1 4 in ISO IEC 15444 1 4 4 Defined boxes in JP2 Table 4 1 lists all boxes that are defined in ISO IEC 15444 1 A JP2 file may contain boxes that are not defined by the standard Such boxes are simply skipped and ignored by conforming reader applications 10 Table 4 1 Defined boxes in JP2 taken from Table 1 2 in ISO IEC 15444 1 with minor modifications Indentation in box name column indicates hierarchical structure Identifies the file as being part of the Specifies file type version and compatibility information including File Type box Required specifying if this file is a conforming JP2 file or if it can be read by a conforming JP2 reader JP2 Header box Yes Required Contains a series of boxes that contain header type information about the file image Header box Required Specifies the size of the image and o
8. 1 65535 hRcD is within range 1 65535 vRcE is within range 127 128 hRcE is within range 127 128 6 13 Default Display Resolution box child of Resolution box This optional box specifies the default grid resolution at which the image should be displayed Element name displayResolutionBox Calculated as Calculated as 7 Calculated as Calculated as vRcN vRcD hRcN hRcD vRescInPixelsPerMeter 25 4 10 hRescInPixelsPerMeter 25 4 10 25 Reported properties Tests Resolution information in this box is stored as a set of vertical and horizontal numerators denominators and exponents Jpylyzer also reports the corresponding grid resolutions in pixels per meter and pixels per inch which are calculated from these values Property Description vRdN Vertical grid resolution numerator vRdD Vertical grid resolution denominator hRdN Horizontal grid resolution numerator hRdD Horizontal grid resolution denominator vRdE Vertical grid resolution exponent hRdE Horizontal grid resolution exponent vResdiInPixelsPerMeter Vertical grid resolution expressed in pixels per meter hResdInPixelsPerMeter Horizontal grid resolution expressed in pixels per meter vResdiInPixelsPerInch Vertical grid resolution expressed in pixels per inch hResdinPixelsPerlnch Horizontal grid resolution expressed in pixels per inch Test name True if boxLengthlsValid Size of box contents equals 10 bytes
9. 2 2 Installation and ser Ups talesves dundoveceinasenueuedoonceuces 3 2 1 Obt lning thesoftwaren n annse anni anna lan Gadesbestaansess 3 2 2 Installation of Python script Linux Unix Windows Mac OS X 3 Testing the installation A en ee nu Weedvacteds 3 TUE A ao 4 2 3 Installation of Windows binaries Windows OnNly ccccoocccncnococnncnanananoss 4 Testing the Installation desdesausvecsadacesideatracesinadetuedaunvesisaateeaee 5 Running jpylyzer without typing the full path occcccnonococoonnononononannnononcnonononnnnnnnconnnnnnnonnnnccnnnnnnns 5 Note on required Windows libraries cccocoooononcnncnnnononoonnononnnonononnnoncnnonnnnnnnnnnnnconnnnnnnnnnnnccnnnnnnns 5 3 Sl A A A 7 Bil COVOIVIOW vs AA AAA 7 3 2 Command line usage nsnsi ansir na a a aha a a ea E at 7 Sale RR NO 7 Output redirection s ner A ias 8 Multiple images redirected output not well formed XML uuunssssseessnnnnnnennnnennnnnnnnnnnnennennnenn 8 3 3 Using jpylyzer as a Python module ccconoocooocccccncnononoonnnnnnnnnnnnononnnnnnnnnonnnnnnns 8 An Structure of a JP2 file ts 9 2 1 Scope OF thischapter ica aid T 9 4 2 G neralformat struct Sui ii 9 4 3 General Structure Of DI a 10 4 4 Defined boxes IA IPD cai A eS 10 5 2QUEPULIO Ma A 13 54 NIE A UNO 13 5 2 toollnfoeleMent ais ieh 14 5 3 Melnto element A taa 14 5 4 ISVAaldIP2 MENE ii iO pci 14 5 3 testselement nannte 14 5 6 p
10. Header box is located after File Type Box and before first Contiguous Codestream box File root contains no more than one JPEG 2000 Signature box File root contains no more than one File Type box File root contains no more than one JP2 Header box Value of height from Image Header Box equals ysiz yOsiz from codestream SIZ header Value of width from Image Header Box equals xsiz xOsiz from codestream SIZ header Value of nC from Image Header Box equals csiz from codestream SIZ header Values of bPCSign from Image Header box or Bits Per Component box are equal to corresponding ssizSign values from codestream SIZ header Values of bPCDepth from Image Header box or Bits Per Component box are equal to corresponding ssizDepth values from codestream SIZ header 29 30 7 Contiguous Codestream box 7 1 General codestream structure The Contiguous Codestream box holds the JPEG 2000 codestream which contains the actual image data in a JP2 Markers and marker segments A codestream is made up of a number of functional entities which are called markers and marker segments A marker is essentially a 2 byte delimiter that delineates the start or end position of a functional entity Amarker segment is the combination of a marker and a set of associated parameters segment parameters However not every marker has any associated parameters General structure of the codestream The codestream is made up of the following componen
11. Size of box contents equals 14 bytes height is within range 1 ae 1 width is within range 1 Ja 1 nC is within range 1 16384 bPCDepth is within range 1 38 OR bPCSign equals 255 in the latter case the bit depth is variable c equals 7 jpeg2000 unkC equals 0 no or 1 yes PR equals O no or 1 yes 6 6 Bits Per Component box child of JP2 Header box This optional box specifies the bit depth of the components in the file in cases where the bit depth is not constant across all components Element name bitsPerComponentBox Reported properties Property bPCSign bPCDepth Description Indicates whether image component is signed or unsigned repeated for each component Number of bits for this component repeated for each component 20 Tests Test name True if bPCisValid bPCDepth is within range 1 38 repeated for each component 6 7 Colour Specification box child of JP2 Header box This box specifies the colourspace of the image Element name colourSpecificationBox Reported properties Property Description meth Specification method Indicates whether colourspace of this image is defined as an enumerated colourspace or using a restricted ICC profile prec Precedence approx Colourspace approximation enum Cs if meth equals Enumerated Enumerated colourspace as descriptive text string icc if meth equals Restricted ICC or Propert
12. in bytes Preferred CMM type Profile version Format majorRevision minorRevision bugFixRevision Profile device class Colourspace Profile connection space Date time string Format YYYY MM DD h m s Profile signature Primary platform Signature of profile tag repeated for each tag in the profile Profile description extracted from desc tag True if meth equals 1 enumerated colourspace or 2 restricted ICC profile prec equals O approx equals O enumCS equals 16 sRGB 17 greyscale or 18 sYCC Actual size of embedded ICC profile equals value of profileSize field in ICC header ICC profile class is input device or display device ICC profile type is not N component LUT based which is not allowed in JP2 This optional box specifies the palette which maps a single component in index space to a multiple component image Not implemented yet 4 Important ISO IEC 15444 1 only allows input device profiles Support of display device profiles will most likely be added soon through an amendment to the standard Jpylyzer is already anticipating these changes but by doing so it is deviating from the existing standard in the interim period 22 6 9 Component Mapping box child of JP2 Header box This optional box specifies the mapping between a palette and codestream components Not implemented yet 6 10 Channel Definition box child of JP2 Head
13. markers that are not yet supported may be taken away in upcoming versions of the tool No check on compressed bitstreams One important limitation that most certainly will not be addressed in any upcoming versions is that jpylyzer does not analyse the data in the compressed bitstream segments Doing so would involve decoding the whole image and this is completely out of jpylyzer s scope As a result it is possible that a JP2 that passes each of jpylyzer s tests will nevertheless fail to render correctly in a viewer application Recommendations for use in quality assurance workflows Because of the foregoing a thorough JP2 quality assurance workflow should not rely on jpylyzer or any other format validator alone but it should include other tests as well Some obvious examples are e Arendering test that checks if a file renders at all e Format migration workflows e g TIFF to JP2 should ideally also include some comparison between source and destination images e g a pixel wise comparison Conversely an image that successfully passes a rendering test or pixel wise comparison may still contain problematic features e g incorrect colour space information so validation rendering tests and pixel wise comparisons are really complementary to each other Note on ICC profile support At the time of writing an amendment is in preparation that will extend the support for embedded ICC profiles in JP2 Jpylyzer is already anticipating
14. to different people a few words about the overall scope of jpylyzer First of all it is important to stress that joylyzer is not a one stop solution that will tell you that an image is 100 perfect What jpylyzer does is this based on the JP2 format specification ISO IEC 15444 1 it parses a file It then subjects the file s contents to a large number of tests each of which is based on the requirements and restrictions that are defined by the standard If a file fails one or more tests this implies that it does not conform to the standard and is no valid JP2 Importantly this presumes that jpylyzer s tests accurately reflect the format specification without producing false positives Valid means probably valid If a file passes all tests this is an indication that it is probably valid JP2 This intentionally implies a certain degree of remaining uncertainty which is related to the following First of all joylyzer or any other format validator for that matter validates a file by trying to prove that it does not conform to the standard It cannot prove that that a file does conform to the standard Related to this even though jpylyzer s validation process is very comprehensive it is not complete For instance the validation of JPEG 2000 codestreams at this moment is still somewhat limited Section 7 2 discusses these limitations in detail Some of the current limitations e g specific codestream segment
15. vRdNIsValid VRAN is within range 1 65535 vRdDIsValid vRdD is within range 1 65535 hRdNIsValid hRdN is within range 1 65535 hRdDisValid hRaD is within range 1 65535 vRdElsValid VRdE is within range 127 128 hRdElsValid hRdE is within range 127 128 6 14 Contiguous Codestream box This box contains the codestream See chapter 7 vRdN 107E vRdD hRdN 1022 hRdD 11 Calculated as VResdInPixelsPerMeter 25 4 10 2 Calculated as hResdInPixelsPerMeter 25 4 10 26 Calculated as 10 Calculated as 6 15 6 16 6 17 6 18 6 19 6 20 6 21 Intellectual Property box This optional box contains intellectual property information about the image Not implemented yet XML box This optional box contains XML formatted information Not implemented yet UUID box This optional box contains additional binary information Not implemented yet UUID Info box superbox This optional box contains additional information associated with a UUID Not implemented yet UUID List box child of UUID Info box This optional box specifies a list of UUIDs Not implemented yet URL box child of UUID Info box This optional box specifies a URL Not implemented yet Top level tests and properties This section describes the tests and output for the top file level Element name properties Reported properties The metrics that are listed here are not properties in a strict sense ins
16. destream main header contains quantization default QCD marker segment Values of quantization parameters from QCD marker segment are consistent with levels from COD marker segment Last 2 bytes in codestream constitute an end of codestream EOC marker segment 1 The consistency check verifies if the length of the quantization default marker segment qcd from qcd is consistent with the quantization style qStyle from qcd and the number of decomposition levels levels from cod They are consistent if the following equation is true gStyle 0 qStyle 1 qStyle 2 no quantization scalar derived scalar expounded 35 7 5 Image and tile size SIZ marker segment child of Contiguous Codestream box Element name siz Reported properties Property Isiz rsiz xsiz ysiz xOsiz yOsiz xTsiz yTsiz xTOsiz yTOsiz csiz ssizSign ssizDepth E xRsiz yRsiz Description Length of SIZ marker segment in bytes Decoder capabilities Width of reference grid Heigth of reference grid Horizontal offset from origin of reference grid to left of image area Vertical offset from origin of reference grid to top of image area Width of one reference tile with respect to the reference grid Height of one reference tile with respect to the reference grid Horizontal offset from origin of reference grid to left side of first tile Vertical offset from origin of reference grid to top side of first tile
17. dified last modified date and time 5 4 sValidJP2 element This element contains the results of the validation If a file passed all the tests i e all tests returned True see section 5 5 it is most likely valid JP2 and the value of isValidJP2 will be True Its value is False otherwise 5 5 tests element This element contains the outcomes of all the individual tests that jpylyzer performs to assess whether a file is valid JP2 The results are organised in a hierarchical tree that corresponds to JP2 s box structure Each individual test can have two values e True if a file passed the test e False if a file failed the test 14 If a file passed all tests this is an indication that it is most likely valid JP2 In that case the isValidJP2 element section 5 4 has a value of True and False in all other cases These tests are all explained in chapters 6 and 7 5 6 properties element This element contains the extracted image properties which are organised in a hierarchical tree that corresponds to JP2 s box structure See chapters 6 and 7 for a description of the reported properties 15 16 6 JP2 box by box The following two chapters provide a detailed explanation of jpylyzer s functionality and its output In particular the following two aspects are addressed 1 Thereported properties 2 Thetests that jpylyzer performs to establish the validity of a file 6 1 About
18. e part header contains information that makes it possible to detect incomplete and truncated codestreams in most cases Depending on the encoder software used this method may fail for images that only contain one single tile part i e images that do not contain tiling Current limitations of comment extraction Both the codestream header and the tile part header can contain comment marker segments which are used for embedding arbitrary binary data or text Jpylyzer will extract the contents of any comments that are text The standard defines that text comments use the ISO IEC 8859 15 Latin character set The current version of jpylyzer uses an ASCII encoding for its output and this doesn t support some of the ISO IEC 8859 15 characters including accented characters which are common in e g French and German Asa result of this text comments that contain any non ASCII characters will not be included in the output file at all This behaviour will change in upcoming versions of jpylyzer 7 3 Structure of reported output Figure 7 2 illustrates the structure of jpylyzer s codestream level output At the top level the SIZ COD QCD and COM marker segments are each represented as individual sub elements The tile part properties are nested in a tileParts element where each individual tile part is represented as a separate tilePart sub element 2 However support for start of packet SOP and end of packet EPH markers may be included in fu
19. er the command would become home jpylyzer jpylyzer py h Executing this command should result in the following screen output usage jpylyzer py h v jp2In JP2 image validator and properties extractor positional arguments jp2In input JP2 image s optional arguments h help show this help message and exit v version show program s version number and exit Troubleshooting If the above test didn t run successfully first verify the following possible causes e On Windows check if files with a py extension are associated with the Python interpreter If you have multiple versions of Python on your system make sure that the association does not link to a Python version that is incompatible with jpylyzer e g Python 2 6 or older or Python 3 0 3 1 e On Unix Linux by default jpylyzer uses the command interpreter that is defined by the python environment variable If this is linked to some very old version of Python things may not work as expected If you run into problems because of this update the command interpreter references in jpylyzer py i e change usr bin env python into usr bin env python27 2 3 Installation of Windows binaries Windows only Download the binary package from GitHub First go to the downloads page https github com bitsgalore jpylyzer downloads You can find the download link to the binaries under the Download Packages heading make sure not t
20. er box This optional box specifies the type and ordering of the components within the codestream as well as those created by the application of a palette Element name channelDefinitionBox Reported properties Property Description n Number of channel descriptions CN Channel index repeated for each channel Typ Channel type repeated for each channel cAssoc Channel association repeated for each channel Tests Test name True if nisValid nis within range 1 65535 boxLengthIsValid Size of box 2 equals 6 n cNIsValid cN is within range 0 65535 repeated for each channel cTypisValid cType is within range 0 65535 repeated for each cAssocisValid channel cAssoc is within range 0 65535 repeated for each channel 23 6 11 Resolution box child of JP2 Header box superbox This optional box contains the grid resolution Element name resolutionBox Reported properties Since this is a superbox it contains one or two child boxes These are represented as child elements in the properties tree Child element Description captureResolutionBox section 6 12 Properties from Capture Resolution box displayResolutionBox section 6 13 Properties from Default Display Resolution box Tests Test name True if containsCaptureOrDisplayResolutionBox Box contains either a Capture Resolution box or a Default Display Resolution box or both noMoreThanOneCaptureResolutionBox Box contains no more than o
21. eseeeaeseeececsesesaeseeececseseeaeseesesceeeaaeseeeeseeesees 31 General structure of the codestream usrsssusssnnrsnnensnnnnsnnnnnnnnnnnnennnnnnnnnnnnnnnnnnnnnnnnnnnnsnnnnnannnnnnn 31 7 2 Limitations of codestream Validation oooocccnnnnocccnononocnnononannnonnnanannnonnns 32 Main codestream ON 32 TANG DALES o EE R A ET EN 33 Detection of incomplete or truncated codestreams cccococooccnncnoconononnnnnnnnnnnonnnnononnnonnnnnnnnnnnncnnnnnonns 33 Current limitations of comment extractiON ooococcccnonaconcnononcnonanononanonanononannnn nono nanann cra nc cnn nr nn ncnnncnos 33 7 3 Structure of reported OUtpUt ooccccccncnononoonnnnnnnnnnnnnnonnnnnnnnnnonnnnnnnnnnnnnnnnnannnos 33 7 4 Contiguous Codestream DOX cocccccccncnonnoonnnnnnnnnnnonononannnnnnnnonnnnnnncnnnnnnnnnannnos 34 Element name neh sensiblen 34 Reported Properties ii ernannten a aa Aca 34 MOSS e A A A AA E EE ta 35 7 5 Image and tile size SIZ marker segment child of Contiguous Codestream box 36 Element MA O eal A Galen e RO O Shee osvenkee 36 Reported Pro PSrtles via o bb een IB Een a 36 MS E E O RN AAA 37 7 6 Coding style default COD marker segment child of Contiguous Codestream BOX 2 ados 38 Elementinamern nen ee es cnadied a aia ear ew san ge po ano Ida Ghana rose Pete a erae pi e e 38 Rep rted pr perties2 E EE AEE E E he A AS a E 38 A ON 39 7 7 Quantization default QCD marker segment child of Contiguous Codest
22. here is also a set of stand alone binaries These allow you to run jpylyzer as an executable Windows application without any need for installing Python This option is particularly useful for Windows users who cannot or don t want to install software on their system Both options are described in the following sections 2 2 Installation of Python script Linux Unix Windows Mac OS X First download the source files from the following location https github com bitsgalore jpylyzer zipball master Then unzip the contents of the ZIP file to an empty directory If you are working on a Linux Unix based system you need to make the scripts executable and convert any line breaks to Unix style ones To do this use the following commands chmod 755 py dos2unix py In order to run the script you will need either Python 2 7 or Python 3 2 or more recent Python can be downloaded from http thon or Testing the installation To test your installation open a console window or command prompt and type 1 The jpylyzer binaries were created using the py2exe package http www py2exe or Note that jpylyzer will not work under Python versions 3 0 3 1 jpylyzerPath jpylyzer py h In the above command replace jpylyzerPath with the full path to the jpylyzer installation directory i e the directory that contains jpylyzer py and its associated files For example if you extracted the files to directory home jpylyz
23. ies of ICC profile as child element see below Any ICC Reported properties of ICC profiles If the colour specification box contains an embedded ICC profile joy yzer will also report the following properties which are all grouped in an icc sub element in the properties tree An exhaustive explanation of these properties is given in the ICC specification ISO 15076 1 1CC 1 2004 10 Note that jpylyzer does not validate embedded ICC profiles even though it does check if a specific ICC profile is allowed in JP2 gt The Any ICC method is defined in ISO IEC 15444 2 the JPX format and is not allowed in JP2 However jpylyzer offers limited support for JPX here by also reporting the properties of ICC profiles that were embedded using this method Note that any file that uses this method will fail the methlsValid test and thereby the validation 21 Tests 6 8 Palette box child of JP2 Header box Property profileSize preferredCMMType profileVersion profileClass colourSpace profileConnectionSpace dateTimeString profileSignature primaryPlatform tag description Test name methlsValid preclsValid approxlsValid enumCSlsValid if meth equals Enumerated iccSizelsValid if meth equals Restricted ICC iccPermittedProfileClass if meth equals Restricted ICC iccNoLUTBasedProfile if meth equals Restricted ICC Description Size of ICC profile
24. ilding block of the format Some boxes superboxes are containers for other boxes Figure 4 1 gives an overview of the top level boxes in a JP2 file JP2 file Figure 4 1 Top level overview of a JP2 file based on Figure 1 1 in ISO IEC 15444 1 Boxes with dashed borders are optional Superbox denotes a box that contains other box es A number of things here are noteworthy to point out e Some of these boxes are required whereas others indicated with dashed lines in Figure 4 1 are optional e The order in which the boxes appear in the file is subject to some constraints e g the first box in a JP2 must always be a Signature box followed by a File Type box e Some boxes may have multiple instances e g Contiguous Codestream box whereas others must be unique e g JP2 Header box More specific details can be found in the standard The important thing here is that requirements like the above are something that should be verified by a validator and this is exactly what jpylyzer does at the highest level of its validation procedure 4 3 General structure of a box All boxes are defined by a generic binary structure which is illustrated by Figure 4 2 Most boxes are made up of the following three components 1 A fixed length box length field that indicates the total size of the box in bytes 2 A fixed length box type field which specifies the type of information that can be found
25. is a superbox that holds a series of boxes that contain header type information about the file Element name jp2HeaderBox Reported properties Since this is a superbox it contains a number of child boxes These are represented as child elements in the properties tree 18 Child element imageHeaderBox section 6 5 bitsPerComponentBox section 6 6 ColourSpecificationBox section 6 7 paletteBox section 6 8 componentMappingBox section 6 9 channelDefinitionBox section 6 10 resolutionBox section 6 11 Tests Test name containsImageHeaderBox containsColourSpecificationBox containsBitsPerComponentBox firstJP2HeaderBoxlslmageHeaderBox noMoreThanOnelmageHeaderBox noMoreThanOneBitsPerComponentBox noMoreThanOnePaletteBox noMoreThanOneComponentMappingBox noMoreThanOneChannelDefinitionBox noMoreThanOneResolutionBox colourSpecificationBoxesAreContiguous paletteAndComponentMappingBoxes OnlyTogether Description Properties from Image Header box required Properties from Bits Per Component box optional Properties from Colour Specification box required Properties from Palette box optional Properties from Component Mapping box optional Properties from Channel Definition box optional Properties from Resolution box optional True if Box contains required Image Header box Box contains required Colour Specification box Box contains Bits Per Component Box which is required if bPCSign and bPCDep
26. n As a result of this text comments that contain any non ASCII characters will not be included in the output file at all This behaviour will change in upcoming versions of jpylyzer 41 7 9 Tile part child of Contiguous Codestream box Tile part level properties and tests This is not a box or a marker segment Element name tilePart child of tileParts Reported properties Each tile part element can contain a number of child elements Child element sot section 7 10 cod section 7 6 qcd section 7 7 com section 7 8 Tests Test name foundNextTilePartOrEOC Description Properties from start of tile SOT marker segment Properties from the optional coding style default COD marker segment tile part header Properties from the optional quantization default QCD marker segment tile part header Properties from the optional comment COM marker segment tile part header True if Tile part start offset tilePartLength points to either start of new tile or EOC marker useful for detecting within codestream byte corruption 7 10 Start of tile part SOT marker segment child of tile part Element name sot Reported properties Property Isot isot psot tpsot tnsot Description Length of SOT marker segment in bytes Tile index Length of tile part Tile part index Number of tile parts of a tile in the codestream value of O indicates that number of tile parts of tile in
27. ne Capture Resolution box noMoreThanOneDisplayResolutionBox Box contains no more than one Default Display Resolution box 6 12 Capture Resolution box child of Resolution box This optional box specifies the grid resolution at which the image was captured Element name captureResolutionBox Reported properties Resolution information in this box is stored as a set of vertical and horizontal numerators denominators and exponents Jpylyzer also reports the corresponding grid resolutions in pixels per meter and pixels per inch which are calculated from these values 24 Property VRcN vRcD hRcN hRcD VRcE hRcE vRescInPixelsPerMeter hRescinPixelsPerMeter vRescInPixelsPerInch hRescInPixelsPerInch Tests Test name boxLengthIsValid vRcNIsValid vRcDIsValid hReNIsValid hRcDIsValid vRcElsValid hRcElsValid Description Vertical grid resolution numerator Vertical grid resolution denominator Horizontal grid resolution numerator Horizontal grid resolution denominator Vertical grid resolution exponent Horizontal grid resolution exponent Vertical grid resolution expressed in pixels per meter Horizontal grid resolution expressed in pixels per 6 meter Vertical grid resolution expressed in pixels per inch Horizontal grid resolution expressed in pixels per 8 inch True if Size of box contents equals 10 bytes VRCN is within range 1 65535 vRcD is within range 1 65535 ARCN is within range
28. nu then go to control panel system and go to the advanced tab Click on the environment variables button Finally locate the Path variable in the system variables window click on Edit and add the full jpy yzer path this requires local Administrator privileges The settings take effect on any newly opened command prompt Note on required Windows libraries Even though the Windows binaries don t require a Python interpreter the following Windows libraries are required WS2_32 dll SHELL32 dll USER32 dll ADVAPI32 dll KERNEL32 dll These libraries are part of most Windows based systems If you run into unexpected behaviour verify that these libraries exist on your system They should be located in the WINDOWS system32 directory 3 Using jpylyzer 3 1 Overview This chapter describes the general use of jpylyzer The first sections cover the use of jpylyzer as a command line tool and as an importable Python module 3 2 Command line usage Synopsis This section explains jpylyzer s general command line interface For the sake of brevity all command line examples assume the use of the Python script moreover full paths are omitted This means that depending on your system and settings you may have to substitute each occurrence of jpylyzer py with its full path the corresponding Windows binary or a combination of both The following examples illustrate this This U
29. o select the Download as zip link as this will get you the source files The name of the file is jpylyzerddmmyyyyWin32 zip where dd mm and yyyy are substituted for day month and year numbers Unzip the contents of this file to an empty folder on your PC Jpylyzer should now be ready for use Testing the installation To test your installation open a Command Prompt DOS prompt and type SjpylyzerPath S jpylyzer h In the above command replace jpylyzerPath with the full path to the jpylyzer installation directory i e the directory that contains jpylyzer exe and its associated files For example if you extracted the files to directory c tools jpylyzer the command would become c tools jpylyzer jpylyzer h Executing this command should result in the following screen output usage jpylyzer h v jp2In JP2 image validator and properties extractor positional arguments jp2In input JP2 image s optional arguments h help show this help message and exit v version show program s version number and exit Running jpylyzer without typing the full path Optionally you may also want to add the full path of the jpylyzer installation directory to the Windows Path environment variable Doing so allows you to run jpylyzer from any directory on your PC without having to type the full path In Windows XP you can do this by selecting settings from the Start me
30. odConsistentWithLevelsPrecincts codeBlockWidthExponentlsValid codeBlockHeightExponentlsValid sumHeightWidthExponentlsValid precinctSizeXIsValid precinctSizeYIsValid True if Icod is within range 12 45 order equals O LRCP 1 RLCP 2 RPCL 3 PCRL or 4 CPRL layers is within range 1 65535 multipleComponentTransformation equals O or 1 levels is within range 0 32 Icod equals 12 precincts no or Icod equals 13 levels precincts yes codeBlockWidthExponent is within range 2 10 codeBlockHeightExponent is within range 2 10 codeBlockWidthExponent codeBlockHeightExponent lt 12 precinctSizeX gt 2 except lowest resolution level repeated for each resolution level order low to high only if precincts is yes precinctSizeY gt 2 except lowest resolution level repeated for each resolution level order low to high only if precincts is yes 39 7 7 Quantization default QCD marker segment child of Contiguous Codestream box Element name qcd Reported properties Property Iqcd qStyle guardBits s epsilon Tests Test name lqcdIsValid qStylelsValid Description Length of QCD marker segment in bytes Quantization style for all components Number of guard bits If gStyle equals O no quantization Epsilon exponent in Eq E 5 of ISO IEC 15444 1 repeated for all decomposition levels order low to high
31. pylyzer s output format 5 1 Overview Jpylyzer generates its output in XML format Figure 5 1 shows the output structure flelnfo filePath fileSizelnBytes fileLastModified jpylyzer isValidJP2 He j H o j er Figure 5 1 Jpylyzer s XML output structure Note that box elements under tests and properties contain further sub elements r 3 The root element jpylyzer contains 5 child elements 1 toollnfo information about jpylyzer 2 filelnfo general information about the analysed file 3 isValidJP2 outcome of the validation 4 tests outcome of the individual tests that are part of the validation process organised by box 5 properties image properties organised by box 5 2 toolinfo element This element holds information about jpylyzer Currently it contains the following sub elements e toolName name of the analysis tool i e jpylyzer py or jpylyzer depending on whether the Python script or the Windows binaries were used e toolVersion version of jpylyzer jpylyzer uses a date versioning scheme 5 3 filelnfo element This element holds general information about the analysed file Currently it contains the following sub elements e filename name of the analysed file without its path e g rubbish jp2 e filePath name of the analysed file including its full absolute path e g d data images rubbish jp2 e fileSizelnBytes file size in bytes e fileLastMo
32. r layers multipleComponentTransformation levels codeBlockWidth codeBlockHeight codingBypass resetOnBoundaries termOnEachPass vertCausalContext predTermination segmentationSymbols transformation precinctSizeX precinctSizeY Description Length of COD marker segment in bytes Indicates use of precincts yes no Indicates use of start of packet marker segments yes no Indicates use of end of packet marker segments yes no Progression order Number of layers Indicates use of multiple component transformation yes no Number of decomposition levels Code block width Code block height Indicates use of coding bypass yes no Indicates reset of context probabilities on coding pass boundaries yes no Indicates termination on each coding pass yes no Indicates vertically causal context yes no Indicates predictable termination yes no Indicates use of segmentation symbols yes no Wavelet transformation 9 7 irreversible or 5 3 reversible Precinct width repeated for each resolution level order low to high only if precincts is yes Precinct heigth repeated for each resolution level order low to high only if precincts is yes 38 Tests Test name IcodIsValid orderlsValid layersisValid multipleComponentTransformation IsValid levelsisValid Ic
33. re no names are provided for each individual switch An example of this is the Scod coding style parameter in the codestream header which contains three switches that define the use of precincts start of packet markers and end of packet markers For cases like these jpylyzer uses its own largely self descriptive names which are all documented in these chapters 6 2 JPEG 2000 Signature box This box contains information that allows identification of the file as being part of the JPEG 2000 family of file formats Element name signatureBox Reported properties None box only holds JPEG 2000 signature which includes non printable characters 17 Tests Test name True if boxLengthIsValid Size of box contents equals 4 bytes signaturelsValid Signature equals Ox0d0a870a 6 3 File Type box This box specifies file type version and compatibility information including specifying if this file is a conforming JP2 file or if it can be read by a conforming JP2 reader Element name fileTypeBox Reported properties Property Description br Brand minV Minor version cL Compatibility field repeatable Tests Test name True if boxLengthlsValid Size of box 8 4 is a whole number integer brandlsValid br equals 0x6a703220 jp2 minorVersionlsValid minV equals 0 compatibilityListlsValid Sequence of compatibility cL fields includes one entry that equals 0x6a703220 jp2 6 4 JP2 Header box superbox This box
34. roperties clemente iia 15 6 PZ box by BOX ee erh 17 6 1 About the properties and tests tre8S ccoooncoccnonoccconononnnnnnnnnnnnncnnannnnnnononoss 17 Naming f pronertiesa en EEA A EE T 17 6 2 JPEG 2000 Signature DOK ic une sn 17 Element n me a4 s 2 2 A Br Theo 17 Reported Propertie sizaro 2 ee ine Reue oh heed dele RE Deere ee dienes 17 Tests as ee tele e e ide idos 18 6 3 PIPE TYPO DO cia aida 18 Element Sees ans TEE ESAE ROKET Ea i Aa ESEESE aiaei 18 Reporte d properties EE E E E E E E eon do 18 E EERE E E E A E 18 6 4 JP2 Header box superbox unse 18 Elementn me 22ER Be nr een Eaa EA A sangen 18 Reporte Properties 18 A AN 19 6 5 Image Header box child of JP2 Header boOx ccoccoccnncconocnnccononccononnass 19 SA A heine eos A oa AE aAa a aea E OERSTE 19 Reported properties iii A EEA A EE EEE EEA EAEE Y 20 E A NS 20 6 6 Bits Per Component box child of JP2 Header box occcoooocccconoccccnononoss 20 IA A TN 20 ROO PO A ni Er A NE AE 20 A O O 21 6 7 Colour Specification box child of JP2 Header box ooocccococcccconocncnnonnass 21 Element Names are sebeesaslenth gutta ra E E ea AA 21 Reported properties u naeh tees db codecs cute die Dai 21 Ti shusavs sep been les DB bie Rips Eisen 22 6 8 Palette box child of JP2 Header box 2uurs00rnn0nnnnunnnnonnnnnnnnnnnnnnn 22 6 9 Component Mapping box child of JP2 Header box 23 6 10 Channel Definition box child of JP2 Header box
35. ser Manual jpylyzer py Substitution example Linux home jpylyzer jpylyzer py Substitution example Windows binaries c tools jpylyzer jpylyzer Furthermore command line arguments that are given between square brackets example h are optional Jpylyzer can be invoked using the following command line arguments jpylyzer py h v jp2In With jp2in input JP2 image s h show help message and exit v show program s version number and exit Note that jp2In can either be a single image or a pathname expression that may include multiple images For example the following command will process one single file jpylyzer py rubbish jp2 The next example shows how to process all files with a jp2 extension in the current directory jpylyzer py jp2 Note that on Unix Linux based systems pathname expressions may not work properly unless you wrap them in quotation marks jpylyzer py jp2 Output redirection All output except system error messages is directed to the standard output device stdout By default this is the console screen Use your platform s standard output redirection operators to redirect output to a file The most common situation will be to redirect the output of one invocation of jpylyzer to an XML file which can be done with the gt operator both under Windows and Linux jpylyzer py jp2iIn gt outputFile E g the following command will run jpylyzer on image rubbish jp2
36. tead they are secondary or derived metrics that are calculated by combining information from different parts boxes of the file 27 Property Description compressionRatio Compression ratio The compression ratio is calculated as the ratio between the size of the uncompressed image data and the actual file size sizeUncompressed compressionRatio sizeCompressed Here sizeCompressed is simply the file size fileSizelnBytes in output file s filelnfo element The uncompressed size in bytes can be calculated by multiplying the number of bytes per pixel by the total number of pixels nC sizeUncompressed gt bPCDepth height width i l With nC number of image components from Image Header box bPCDepth bits per component from Image Header box or Bits Per Compnent box height image height from Image Header box width image width from Image Header box In addition the root of the properties tree contains the elements for all top level boxes Child element Description signatureBox section 6 2 Properties from JPEG 2000 Signature box fileTypeBox section 6 3 Properties from File Type box jp2HeaderBox section 6 4 Properties from JP2 Header box contiguousCodestreamBox chapter 7 Properties from Contiguous Codestream box intellectualPropertyBox section 6 15 Properties from Intellectual Property box optional xmlBox section 6 16 Properties from XML box optional uuidBox section 6 17
37. team DO ainia 40 Element name made IE AAA AAA DA 40 Reported properties lit a aa e aa ia a en asana eS aa ieia 40 MO O E A T E O ET LT LT TI cues tee 40 7 8 Comment COM marker segment child of Contiguous Codestream box 41 A A ANOTA 41 RE POLE Properties un rn A er Ta Een EIS E 41 T OSES ys ccviccusuves A a iS ek 41 Note on support of Latin CNCOGING ccccccccccccsessssecccecscsesesaececececseseeaeseescecseseeaeseesceseesesueeeesesseegeea 41 7 9 Tile part child of Contiguous Codestream box oooccccnococccccononcnonocannnnncnnn 42 EME NA MC nica teens sem Rn BR Es 42 Reported properties gaccss A tac Laced poeta rs ee RIED Denen 42 7 10 Start of tile part SOT marker segment child of tile part 42 AANE aa E TR IICA ca E E E E AROS eier a 42 REPOrted properties asii A A A EA 42 NN 43 SOI A AAA A sks d iia 45 1 11 1 2 Introduction About jpylyzer This User Manual documents jpylyzer a validator and feature extractor for JP2 images JP2 is the still image format that is defined by JPEG 2000 Part 1 ISO IEC 15444 1 Jpylyzer was specifically created to answer the following questions that you might have about any JP2 file 1 Isthis really a JP2 and does it really conform to the format s specifications validation 2 What are the technical characteristics of this image feature extraction Validation scope and restrictions Since the word validation means different things
38. th in Image Header Box equal 1 and 128 respectively test is skipped otherwise First child box is Image Header Box Box contains no more than one Image Header box Box contains no more than one Bits Per Component box Box contains no more than one Palette box Box contains no more than one Component Mapping box Box contains no more than one Channel Definition box Box contains no more than one Resolution box In case of multiple Colour Specification boxes they appear contiguously in the JP2 Header box Box contains a Palette box only if Component Mapping box is present box contains a Component Mapping box only if Palette box is present 6 5 Image Header box child of JP2 Header box This box specifies the size of the image and other related fields Element name imageHeaderBox 19 Reported properties Tests Property height width nc bPCSign bPCDepth c unkC iPR Test name boxLengthIsValid heightlsValid widthlsValid nClsValid bPClsValid clsValid unkClsValid iPRIsValid Description Image height in pixels Image width in pixels Number of image components Indicates whether image components are signed or unsigned Number of bits per component Compression type Colourspace Unknown field yes if colourspace of image data is unknown no otherwise Intellectual Property field yes if image contains intellectual property rights information no otherwise True if
39. the codestream is not defined in current header 42 Tests Test name IsotlsValid isotlsValid psotlsValid tpsotlsValid True if Isot equals 10 isot is within range 0 65534 psot is not within range 1 13 tpsot is within range 0 254 43 44 8 References ICC Specification ICC 1 1998 09 File Format for Color Profiles International Color Consortium 1998 29 December 2010 lt http www color org ICC 1 1998 09 pdf gt ISO IEC Information technology JPEG 2000 image coding system Core coding system ISO IEC 15444 1 Second edition Geneva ISO IEC 2004a 28 Dec 2010 lt http www jpeg org public 15444 1annexi pdf gt Annex I JP2 file format syntax only ISO IEC Information technology JPEG 2000 image coding system Extensions ISO IEC 15444 2 First edition Geneva ISO IEC 2004b 28 Dec 2010 lt http www jpeg org public 15444 2annexm pdf gt Annex M JPX extended file format syntax only 45 46
40. the main codestream header Most of these are optional The current version of jpylyzer only supports i e reads and validates the following main header marker segments which includes all the ones that are required e Start of codestream SOC marker segment required e Image and tile size SIZ marker segment required e Coding style default COD marker segment required e Quantization default QCD marker segment required e Comment COM marker segment optional 32 If joylyzer encounters a marker segment that is not supported it will silently ignore it Tile parts The tile part validation has similar limitations The standard lists 11 marker segments that can occur in the tile part header Currently joylyzer only supports the following ones e Start of tile part SOT marker segment required e Coding style default COD marker segment optional e Quantization default QCD marker segment optional e Comment COM marker segment optional e Start of data SOD marker segment required In addition to this jpylyzer can not be used to establish whether the data in the bitstream are correct this would require decoding the compressed image data which is completely out of jpylyzer s scope As a result if jpylyzer is used as part of a quality assurance workflow it is recommended to also include an additional check on the image contents Detection of incomplete or truncated codestreams A JP2 s til
41. the properties and tests trees The properties element in jpylyzer s output holds a hierarchical tree structure that contains all extracted properties The tests tree follows the same structure The hierarchy reflects JP2 s box structure explained in Chapter 4 each box is represented by a corresponding output element that contains the corresponding property entries If a box is a superbox the output element will contain child elements for each child box For some boxes the output contains further sub elements This applies in particular to the Contiguous Codestream box since its contents are more complex than any of the other boxes Also if a Colour Specification box contains an embedded ICC profile the properties of the ICC profile are stored in a separate sub element In addition to this one property that is reported by jpylyzer the compression ratio is not actually extracted from any particular box Instead it is calculated from the file size and some properties from the Header boxes As a result it is reported separately in the root of the properties tree Naming of properties The naming of the reported properties largely follows the standard ISO IEC 15444 1 Some minor differences follow from the fact that the standard does have any consistent use of text case whereas jpylyzer uses lower camel case In addition some parameters in the standard are compound units that aggregate a number of Boolean switches whe
42. ther related fields Specifies the bit depth of the ts in the file i h Bits Per Component box Optional ann gt pl en the bit depth is not constant across all components Colour Specification box No Required Specifies the colourspace of the image Specifies the palette which maps a Palette box Optional single component in index space to a multiple component image S ifies th ing bet lett Component Mapping box No Optional a A pa CTE and codestream components Specifies the type and ordering of the Channel Definition box Optional components within the codestream as well as those created by the application of a palette Capture Specifies the grid resolution at which the Optional Resolution box image was captured Default Display Galans Specifies the default grid resolution at Resolution box P which the image should be displayed Contiguous Codestream box mo Reauired Contains the codestream E EA information about the image Provides a tool by which vendors can XML box Optional add XML formatted information to a JP2 file Provides a tool by which vendors can UUID box Optional add additional information to a file without risking conflict with other vendors Provides a tool by which a vendor may UUID Info box Yes Optional provide access to additional information associated with a UUID UUID List box No Optional Specifies a list of UUIDs 11 12 5 Output format This chapter explains j
43. these changes and as a result there is a minor discrepancy here between jpy yzer and the current standard text 1 3 Outline of this User Manual Chapter 2 describes the installation process of jpylyzer for Windows and Unix based systems Chapter 3 explains the usage of jpylyzer as a command line tool or as an importable Python module Chapter 4 gives a brief overview of the structure of JP2 and its box structure Jpylyzer s output format is explained in chapter 5 The final chapters give a detailed description of the tests that jpylyzer performs for validation and its reported properties Chapter 6 does this for all boxes except for the Contiguous Codestream box which is given a chapter 7 of its own 1 4 Funding The development of jpylyzer was funded by the EU FP 7 project SCAPE SCAlabable Preservation Environments More information about this project can be found here http www scape project eu 2 Installation and set up 2 1 Obtaining the software You can obtain the latest version of the software from the jpylyzer GitHub repository which is located here https github com bitsgalore jpylyzer You have two options 1 Use the Python source code This allows you to run the software as a Python script on most popular platforms Windows Linux Mac etc However this requires that you have a recent version of the Python interpreter available on your system 2 Alternatively for Windows users t
44. ts illustrated in Figure 7 1 1 Astart of codestream marker that indicates the start of the codestream 2 A main codestream header which includes a number of header marker segments 3 A sequence of one or more tile parts Each tile part consists of the following components a Astart oftile part marker segment which indicates the start of a tile part and which also contains index information of the tile part and its associated tile b Optionally this may be followed by one or more additional tile part header marker segments c A start of data marker that indicates the start of the bitstream for the current tile part d The bitstream 4 An end of codestream marker that indicates the end of the codestream 31 tile part header length SOT tile part i header SOD bitstream tile part O tile part header tile patn f SOC start of codestream marker SOT start of tile part marker segment SOD start of data marker EOC end of codestream marker Figure 7 1 General structure of a JPEG 2000 codestream 7 2 Limitations of codestream validation It is important to stress here that jpy yzer currently doesn t support the full set of marker segments that can occur in a codestream As a result the validation of codestreams is somewhat limited These limitations are discussed in this section Main codestream header Annex A of ISO IEC 15444 1 lists a total of 13 marker segments that can occur in
45. ture versions 14 For example in a TIFF to JP2 conversion workflow one could include a pixel by pixel comparison of the values in the TIFF and the JP2 33 contiguousCodestreamBox Figure 7 2 Structure of codestream level XML output 7 4 Contiguous Codestream box Element name contiguousCodestreamBox Reported properties The reported properties for this box are organised into a number groups which are represented as child elements in the properties tree 34 Tests Child element siz section 7 5 cod section 7 6 acd section 7 7 com section 7 8 tileParts section 7 9 Test name codestreamStartsWithSOCMarker foundSIZMarker foundCODMarker foundQCDMarker quantizationConsistentWithLevels foundEOCMarker 4 3 levels lgcd 5 5 6 levels Description Properties from the image and tile size SIZ marker segment codestream main header Properties from the coding style default COD marker segment codestream main header Properties from the quantization default QCD marker segment codestream main header Properties from the optional comment COM marker segment codestream main header Properties from individual tile parts True if First 2 bytes in codestream constitute a start of codestream SOC marker segment Second marker segment in codestream is image and tile size SIZ marker segment Codestream main header contains coding style default COD marker segment Co

Download Pdf Manuals

image

Related Search

Related Contents

MANUAL DO USUÁRIO - Positivo Informática  

Copyright © All rights reserved.
Failed to retrieve file