TER.TERcoder
Class Coder

java.lang.Object
  extended by TER.TERcoder.Coder

public class Coder
extends java.lang.Object

Main class of TERcoder application. It receives all parameters, checks its validity and runs TER coder. Usage example:
  construct
  setParameters
  run

Version:
1.05
Author:
Group on Interactive Coding of Images (GICI)

Field Summary
(package private)  int[] adjustHeaderParameters
          Defintion in WriteSegments.adjustHeaderParameters
(package private)  int[] bitPlaneStop
          Definition in SegmentCode2D.bitPlaneStop
(package private)  int[] blocksPerSegment
          Definition in SegmentCode2D.blocksPerSegment
(package private)  int[] codeWordLength
          Definition in WriteSegments.codeWordLength
(package private)  int[] coefficientsApproximationTypes
          Definition in CoefficientsApproximation.approximationTypes
(package private)  float[] compressionFactor
          Float array that contains the compression factor for each segment
(package private)  int[] compressionOrder
          Definition in SegmentCode2D.compressionOrder
(package private)  boolean[] controlMSE
           
(package private)  java.lang.Class[] cTypes
          Array that contains the type of each image component.
(package private)  float[][] customWeight
          Definition in ForwardWeighting.customWeight
(package private)  int[] customWtFlag
          Definition in ForwardWeighting.customWtFlag
(package private)  boolean[] CVerbose
          Show some information about compression process.
(package private)  int[] DCStop
          Definition in SegmentCode2D.DCStop
(package private)  float[] desiredDistortion
           
(package private)  int[] distortionMeasure
          Definition in SegmentCode2D.distortion
(package private)  int[] entropyAC
          Definition in EncodeGaggleAC.entropyAC
(package private)  int[] gaggleACSize
          Definition in SegmentCode2D.gaggleACSize
(package private)  int[] gaggleDCSize
          Definition in SegmentCode2D.gaggleDCSize
(package private)  int[] idAC
          Definition in SegmentCode2D.idAC
(package private)  int[] idDC
          Definition in SegmentCode2D.idDC
(package private)  int[] imageExtensionType
          Definition in ImageExtension.imageExtensionType
(package private)  float[][][] imageSamplesFloat
          Original image samples (index meaning [z][y][x]).
(package private)  long initStageTime
          Used for verbose information (time for stage).
(package private)  long initTime
          Used for verbose information (total time).
(package private)  boolean[] LSComponents
          Definition in LevelShift.LSComponents
(package private)  int[] LSSubsValues
          Definition in LevelShift.LSSubsValues
(package private)  int LSType
          Definition in LevelShift.LSType
(package private)  int[] optACSelect
          Definition in SegmentCode2D.optACSelect
(package private)  int[] optDCSelect
          Definition in SegmentCode2D.optDCSelect
(package private)  java.lang.String outFile
          Output file name of coded bitstream.
(package private)  int[] padRows
          Definition in ImageExtension.padRows
(package private)  boolean parametersSet
          To know if parameters are set.
(package private)  int[] part2Flag
          Definition in RecommendedHeader.part2Flag
(package private)  int[] part3Flag
          Definition in RecommendedHeader.part3Flag
(package private)  int[] part4Flag
          Definition in RecommendedHeader.part4Flag
(package private)  int[] pixelBitDepth
          Specifies the input pixel bit depth for each component
(package private)  int[] progressionOrder
           
(package private)  int[] resolutionLevels
          Definition in SegmentCode2D.resolutionLevels
(package private)  boolean RGBComponents
          Indicates if the three first components of the image corresponds to a RGB model.
(package private)  int[] segByteLimit
          Definition in SegmentCode2D.segByteLimit
(package private)  int[] signedPixels
          Specifies whether input pixel values are signed or unsigned quantities for each component
(package private)  int[] stageStop
          Definition in SegmentCode2D.stageStop
(package private)  int[] transposeImg
          Definition in TransposeImage.transposeImg
(package private)  int[] truncationPoints
          Defintion in InterleaveSegment.truncationPoints
(package private)  int[] useFill
          Definition in WriteSegments.useFill
(package private)  int[] WTLevels
          Definition in ForwardWaveletTransform.WTLevels
(package private)  int[] WTOrder
          Definition in ForwardWaveletTransform.WTOrder
(package private)  int[] WTType
          Definition in ForwardWaveletTransform.WTTypes
(package private)  int xOriginalSize
          Image width.
(package private)  int xSize
          Image width.
(package private)  int yOriginalSize
          Image height.
(package private)  int ySize
          Image height.
(package private)  int zOriginalSize
          Number of image components.
(package private)  int zSize
          Number of image components.
 
Constructor Summary
Coder(float[][][] imageSamplesFloat, java.lang.Class[] cTypes, boolean RGBComponents)
          Constructor of TERcoder.
 
Method Summary
private  void listFloatArray(float[] parameter)
          Prints the numbers contained in a float array
private  void listIntegerArray(int[] parameter)
          Prints the numbers contained in an integer array
 void run()
          Runs the TER coder algorithm to compress the image.
private  int[] setParameter(int[] inputParameter, int size, int defaultValue)
          Set the parameter.
private  boolean[] setParameterBoolean(boolean[] inputParameter, int size, boolean defaultValue)
          Set the parameter containing boolean values.
private  float[] setParameterFloat(float[] inputParameter, int size, float defaultValue)
          Set the parameter containing float values.
 void setParameters(java.lang.String outFile, int[] imageExtensionType, int[] WTType, int[] WTLevels, int[] WTOrder, int[] customWtFlag, float[] customWeight, int[] part2Flag, int[] part3Flag, int[] part4Flag, int[] segByteLimit, int[] DCStop, int[] bitPlaneStop, int[] stageStop, int[] useFill, int[] blocksPerSegment, int[] optDCSelect, int[] optACSelect, int[] signedPixels, int[] transposeImg, int[] codeWordLength, int[] pixelBitDepth, int[] gaggleDCSize, int[] gaggleACSize, int[] idDC, int[] idAC, float[] desiredDistortion, int[] distortionMeasure, int[] entropyAC, int[] resolutionLevels, float[] compressionFactor, boolean[] CVerbose, float[] bpp, int[] truncationPoints, int[] adjustHeaderParameters, int[] compressionOrder, int LSType, int[] LSComponents, int[] LSSubsValues, int[] coefficientsApproximationTypes)
          Set the parameters used to perform the compression and check validity.
 void showArguments()
          Show parameters used to encode the image
(package private)  void showTimeMemory(java.lang.String stage)
          Show some time and memory usage statisticals.
private  boolean verifyParameter(int[] inputParameter, int size, int minValue, int maxValue)
          Verify Parameters defined in this class
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

parametersSet

boolean parametersSet
To know if parameters are set.

True indicates that they are set otherwise false.


imageSamplesFloat

float[][][] imageSamplesFloat
Original image samples (index meaning [z][y][x]).

All values allowed.


cTypes

java.lang.Class[] cTypes
Array that contains the type of each image component.

Only primitive type value allowed (p.e.: Byte.TYPE, Integer.TYPE, ...).


RGBComponents

boolean RGBComponents
Indicates if the three first components of the image corresponds to a RGB model.

True if three first components are RGB, false otherwise.


zSize

int zSize
Number of image components.

Negative values are not allowed for this field.


ySize

int ySize
Image height.

Negative values are not allowed for this field.


xSize

int xSize
Image width.

Negative values are not allowed for this field.


zOriginalSize

int zOriginalSize
Number of image components.

Negative values are not allowed for this field.


yOriginalSize

int yOriginalSize
Image height.

Negative values are not allowed for this field.


xOriginalSize

int xOriginalSize
Image width.

Negative values are not allowed for this field.


outFile

java.lang.String outFile
Output file name of coded bitstream.

Valid file name (with path).


imageExtensionType

int[] imageExtensionType
Definition in ImageExtension.imageExtensionType


WTType

int[] WTType
Definition in ForwardWaveletTransform.WTTypes


WTLevels

int[] WTLevels
Definition in ForwardWaveletTransform.WTLevels


WTOrder

int[] WTOrder
Definition in ForwardWaveletTransform.WTOrder


customWtFlag

int[] customWtFlag
Definition in ForwardWeighting.customWtFlag


customWeight

float[][] customWeight
Definition in ForwardWeighting.customWeight


part2Flag

int[] part2Flag
Definition in RecommendedHeader.part2Flag


part3Flag

int[] part3Flag
Definition in RecommendedHeader.part3Flag


part4Flag

int[] part4Flag
Definition in RecommendedHeader.part4Flag


padRows

int[] padRows
Definition in ImageExtension.padRows


segByteLimit

int[] segByteLimit
Definition in SegmentCode2D.segByteLimit


DCStop

int[] DCStop
Definition in SegmentCode2D.DCStop


bitPlaneStop

int[] bitPlaneStop
Definition in SegmentCode2D.bitPlaneStop


stageStop

int[] stageStop
Definition in SegmentCode2D.stageStop


useFill

int[] useFill
Definition in WriteSegments.useFill


blocksPerSegment

int[] blocksPerSegment
Definition in SegmentCode2D.blocksPerSegment


optDCSelect

int[] optDCSelect
Definition in SegmentCode2D.optDCSelect


optACSelect

int[] optACSelect
Definition in SegmentCode2D.optACSelect


signedPixels

int[] signedPixels
Specifies whether input pixel values are signed or unsigned quantities for each component

Valid values are:


transposeImg

int[] transposeImg
Definition in TransposeImage.transposeImg


codeWordLength

int[] codeWordLength
Definition in WriteSegments.codeWordLength


gaggleDCSize

int[] gaggleDCSize
Definition in SegmentCode2D.gaggleDCSize


gaggleACSize

int[] gaggleACSize
Definition in SegmentCode2D.gaggleACSize


idDC

int[] idDC
Definition in SegmentCode2D.idDC


idAC

int[] idAC
Definition in SegmentCode2D.idAC


pixelBitDepth

int[] pixelBitDepth
Specifies the input pixel bit depth for each component

Valid values are positive values


entropyAC

int[] entropyAC
Definition in EncodeGaggleAC.entropyAC


resolutionLevels

int[] resolutionLevels
Definition in SegmentCode2D.resolutionLevels


initStageTime

long initStageTime
Used for verbose information (time for stage).

0 is initial time.


initTime

long initTime
Used for verbose information (total time).

0 is initial time.


CVerbose

boolean[] CVerbose
Show some information about compression process. Each value is boolean (false means NO show, true means show).

Each value represents the following:


truncationPoints

int[] truncationPoints
Defintion in InterleaveSegment.truncationPoints


adjustHeaderParameters

int[] adjustHeaderParameters
Defintion in WriteSegments.adjustHeaderParameters


progressionOrder

int[] progressionOrder

controlMSE

boolean[] controlMSE

desiredDistortion

float[] desiredDistortion

distortionMeasure

int[] distortionMeasure
Definition in SegmentCode2D.distortion


compressionFactor

float[] compressionFactor
Float array that contains the compression factor for each segment


compressionOrder

int[] compressionOrder
Definition in SegmentCode2D.compressionOrder


LSType

int LSType
Definition in LevelShift.LSType


LSComponents

boolean[] LSComponents
Definition in LevelShift.LSComponents


LSSubsValues

int[] LSSubsValues
Definition in LevelShift.LSSubsValues


coefficientsApproximationTypes

int[] coefficientsApproximationTypes
Definition in CoefficientsApproximation.approximationTypes

Constructor Detail

Coder

public Coder(float[][][] imageSamplesFloat,
             java.lang.Class[] cTypes,
             boolean RGBComponents)
Constructor of TERcoder. It receives original image and some information about it.

Parameters:
imageSamplesFloat - definition in this class
cTypes - definition in this class
RGBComponents - definition in this class
Method Detail

setParameters

public void setParameters(java.lang.String outFile,
                          int[] imageExtensionType,
                          int[] WTType,
                          int[] WTLevels,
                          int[] WTOrder,
                          int[] customWtFlag,
                          float[] customWeight,
                          int[] part2Flag,
                          int[] part3Flag,
                          int[] part4Flag,
                          int[] segByteLimit,
                          int[] DCStop,
                          int[] bitPlaneStop,
                          int[] stageStop,
                          int[] useFill,
                          int[] blocksPerSegment,
                          int[] optDCSelect,
                          int[] optACSelect,
                          int[] signedPixels,
                          int[] transposeImg,
                          int[] codeWordLength,
                          int[] pixelBitDepth,
                          int[] gaggleDCSize,
                          int[] gaggleACSize,
                          int[] idDC,
                          int[] idAC,
                          float[] desiredDistortion,
                          int[] distortionMeasure,
                          int[] entropyAC,
                          int[] resolutionLevels,
                          float[] compressionFactor,
                          boolean[] CVerbose,
                          float[] bpp,
                          int[] truncationPoints,
                          int[] adjustHeaderParameters,
                          int[] compressionOrder,
                          int LSType,
                          int[] LSComponents,
                          int[] LSSubsValues,
                          int[] coefficientsApproximationTypes)
                   throws ParameterException
Set the parameters used to perform the compression and check validity. If a parameter is not initialized, this class initalizes it with default values.

Parameters:
outFile - definition in outFile
imageExtensionType - definition in ImageExtension.imageExtensionType
WTType - definition in ForwardWaveletTransform.WTTypes
WTLevels - definition in ForwardWaveletTransform.WTLevels
WTOrder - definition in ForwardWaveletTransform.WTOrder
customWtFlag - definition in ForwardWeighting.customWtFlag
customWeight - definition in ForwardWeighting.customWeight
part2Flag - definition in RecommendedHeader.part2Flag
part3Flag - definition in RecommendedHeader.part3Flag
part4Flag - definition in RecommendedHeader.part4Flag
segByteLimit - definition in SegmentCode2D.segByteLimit
DCStop - definition in SegmentCode2D.DCStop
bitPlaneStop - definition in SegmentCode2D.bitPlaneStop
stageStop - definition in SegmentCode2D.stageStop
useFill - definition WriteSegments.useFill
blocksPerSegment - definition in SegmentCode2D.blocksPerSegment
optDCSelect - definition in SegmentCode2D.optDCSelect
optACSelect - definition in SegmentCode2D.optACSelect
signedPixels - definition in signedPixels
transposeImg - definition in TransposeImage.transposeImg
codeWordLength - definition in WriteSegments.codeWordLength
pixelBitDepth - definition in pixelBitDepth
gaggleDCSize - definition in SegmentCode2D.gaggleDCSize
gaggleACSize - definition in SegmentCode2D.gaggleACSize
idDC - definition in SegmentCode2D.idDC
idAC - definition in SegmentCode2D.idAC
desiredDistortion - definition in desiredDistortion
distortionMeasure - definition in distortionMeasure
entropyAC - definition in EncodeGaggleAC.entropyAC
resolutionLevels - definition in SegmentCode2D.resolutionLevels
compressionFactor - definition in compressionFactor
CVerbose - definition in CVerbose
bpp - indicates the bits per pixel that must be employed to encode each segment
truncationPoints - defintion in InterleaveSegment.truncationPoints
adjustHeaderParameters - defintion in WriteSegments.adjustHeaderParameters
compressionOrder - definition in SegmentCode2D.compressionOrder
LSType - definition in LevelShift.LSType
LSComponents - definition in LevelShift.LSComponents
LSSubsValues - definition in LevelShift.LSSubsValues
coefficientsApproximationTypes - definition in CoefficientsApproximation.approximationTypes
Throws:
ParameterException - when an invalid or unrecognized exception is detected it will be thrown

run

public void run()
         throws java.lang.Exception
Runs the TER coder algorithm to compress the image.

Throws:
java.lang.Exception - when something goes wrong and compression must be stopped

setParameter

private int[] setParameter(int[] inputParameter,
                           int size,
                           int defaultValue)
                    throws ParameterException
Set the parameter.

Parameters:
inputParameter - is an array of integers given by the user
size - integer that indicates the number of values to be set
defaultValue - integer that contains default value
Returns:
an integer array containing the required amount values to perform the coding process
Throws:
ParameterException

setParameterBoolean

private boolean[] setParameterBoolean(boolean[] inputParameter,
                                      int size,
                                      boolean defaultValue)
                               throws ParameterException
Set the parameter containing boolean values.

Parameters:
inputParameter - is an array of boolean given by the user
size - integer that indicates the number of values to be set
defaultValue - integer that contains default value
Returns:
a boolean array containing the required amount values to perform the coding process
Throws:
ParameterException

setParameterFloat

private float[] setParameterFloat(float[] inputParameter,
                                  int size,
                                  float defaultValue)
                           throws ParameterException
Set the parameter containing float values.

Parameters:
inputParameter - is an array of floats given by the user
size - integer that indicates the number of values to be set
defaultValue - integer that contains default value
Returns:
a float array containing the required amount values to perform the coding process
Throws:
ParameterException

verifyParameter

private boolean verifyParameter(int[] inputParameter,
                                int size,
                                int minValue,
                                int maxValue)
Verify Parameters defined in this class

Parameters:
inputParameter - definition in this class
size - number of components
minValue - minimum allowed values
maxValue - maximum allowed values
Returns:
a boolean that indicates if the parameters are allowed

showTimeMemory

void showTimeMemory(java.lang.String stage)
Show some time and memory usage statisticals.

Parameters:
stage - string that will be displayed

showArguments

public void showArguments()
Show parameters used to encode the image


listIntegerArray

private void listIntegerArray(int[] parameter)
Prints the numbers contained in an integer array

Parameters:
parameter - array of integers to be printed

listFloatArray

private void listFloatArray(float[] parameter)
Prints the numbers contained in a float array

Parameters:
parameter - array of floats to be printed


TER - Copyright (C) 2006
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Group on Interactive Coding of Images (GICI) - UAB (Spain)