============================================================================== E V I T A Efficient Visualization of Terascale Datasets Version 0.16, 16-jul-2016 Copyright (C) 2000-2016 Team Evita ------------------------------------------------------------------------------ CHANGES: Version 0.16: 16-jul-2016: Version 0.16 released 15-jul-2016: Updated to build for VTK Version 6.3 14-jul-2016: Level-of-detail rendering in client completed; explicit grid still disabled until further debugging is done 12-jul-2016: Updating Doxyfile configuration 29-jun-2016: Level of detail implemented for magnitudes ROIs in evCodecSARL 29-jun-2016: Alpha mask transmitted by transcoder along with first bitplace of current scale rather than separately 29-jun-2016: Replaced std::vector::clear() with copy assignment in order to force freeing of memory in evField, evVector, evAddress, evVectorField 28-jun-2016: evCodecSARLComponentInfo::CodecMap now resized for level of detail in evCodecSARL::ProcessLevelOfDetail() 28-jun-2016: Pixel size passed from client to transcoder; pixel size used in evPrioritySchedule::MatchAndMoveEntries() to effectuate transcoder sending only active scales based on pixel size 28-jun-2016: Made arithmetic coder nonadaptive and moved from evCodecSARLComponentInfo to evCodecSARL 25-jun-2016: Level of detail implemented for coefficients ROIs in evCodecSARL 23-jun-2016: Level of detail implemented for reconstructed ROIs in evCodecSARL 30-may-2016: Added evFieldScaleInfo and evField::GetScaleInfo() 26-may-2016: Added current scale to evPriorityScheduleEntry 26-may-2016: Revised evCodecSARL to separate ROI header and mask as independent bitplanes 0 and 1, respectively 26-may-2016: Added evAlphaField 25-may-2016: Consolidated encode and decode functionality from evCodecEmbedded into evCodecSARL 24-may-2016: Revised evROI implementation - each component is now individually sized and has own alpha mask 24-may-2016: Implemented level-of-detail rendering - visualizers render from baseband only and baseband scale chosen by pixel size 23-may-2016: Fixed client quit before server connection 22-may-2016: Stopped make_dist from editing itself Version 0.15: 22-may-2016: Version 0.15 released 22-may-2016: Disabled level-of-detail rendering and explicit grid in client until further debugging 21-may-2016: Modified evGUIClient::QuitCallback() to signal EVSIGNAL_QUIT and to end with evThreadExit 21-may-2016: Added EVSIGNAL_QUIT and evThreadExit 21-may-2016: Moved to real-time signals in evita.cc 20-may-2016: Fixed various memory leaks 18-may-2016: Fixed inverse-transform bug in evMultiscaleFeatureDetector::PropagateZerosFilter 18-may-2016: Added evGUIWindow::Show() 17-may-2016: Added wait_for_expose() after each FLTK window show() 17-may-2016: GUI fixes 17-may-2016: Bug fixes 15-may-2016: Updated to perl-based substr 15-may-2016: Replaced evInteractorStyle.{h,cc} and evInteractorStyleImaging.{h,cc} with evInterActorStyle2D.{h,cc} 15-may-2016: Updated to build for VTK Version 6.2 and QccPack Version 0.61 04-mar-2003: Updated copyright year range for 2016 04-aug-2003: Added -ns option to dsdetect 04-aug-2003: Added -icp option to dsdetect 04-aug-2003: Added call to evROI::CalcBoundingBox() in evCodecNone::Decode() 04-aug-2003: Fixed filter allocation bug in constructor for evMultiscaleFeatureDetector::PropagateZerosFilter 04-mar-2003: Updated copyright year range for 2003 04-mar-2003: Updated for QccPack 0.42 API changes 22-aug-2002: Eliminated start_odd 18-aug-2002: Added RenderFrameRate to evVisualizer 16-aug-2002: Debugged level-of-detail reconstruction and 2D visualization 26-jul-2002: Added level-of-detail reconstruction and 2D visualization 25-jul-2002: Fixed priority normalization across all queues 24-jul-2002: Added activating and deactivating of ROIs based on view frustum 23-jul-2002: Added evVisualizer::ViewFrustumCallback() 23-jul-2002: Added evBoundingBox::InsideViewFrustum() Version 0.14: 23-jul-2002: Version 0.14 released 23-jul-2002: Fixed broken arithmetic contexts in evSegmentationMapCodecRunlength 23-jul-2002: Updated README for new dsdetect operation 23-jul-2002: Fixed command-line evita_encoder operation for explicit grid 22-jul-2002: Minor changes to fix compilation warnings 22-jul-2002: Fixed camera-clipping-range bug in evVisualizer2D::ResetCamera() 22-jul-2002: Modified dsdetect to permit single-roi segmentation-map generation 22-jul-2002: Added imgtods 19-jul-2002: Added evFeatureRanker, evFeatureRankerArea, evFeatureRankerMaximum, evFeatureRankerStrength, evFeatureRankerAverageStrength 19-jul-2002: Added evFeatureDetectorSwirl::VectorCoreDenoising() 18-jul-2002: Reduced memory use in feature-detection routines 18-jul-2002: Added evMultiscaleFeatureDetector 17-jul-2002: Added evWaveletTransformCollection 17-jul-2002: Added evField::PreserveBaseband() 16-jul-2002: Refinements to evField::RasterScan(), evField::InverseRasterScan(), evField::ExtractSubband() 16-jul-2002: Added evDefinitions.h, evDefaultValues.h 13-jul-2002: Fixed minor Solaris compiler problems 13-jul-2002: Removed tabs from source code Version 0.13: 09-jul-2002: Version 0.13 released 09-jul-2002: Removed -DVTK_USE_PTHREADS from Makefiles 09-jul-2002: Added pacific.curvilinear.ds 09-jul-2002: Fixed visualization using curvilinear grids 08-jul-2002: Added evROI::SubtractUniformGrid(), evROI::AddUniformGrid() 08-jul-2002: Added bounding box to priority schedule 08-jul-2002: Added evBoundingBox 03-jul-2002: Added grid to visualizer 03-jul-2002: Added evGUIComponentMultiBrowser 25-jun-2002: Added missing std:: prefix to vectors in evCodecEmbedded and evCodecSARL Version 0.12: 24-jun-2002: Version 0.12 released 24-jun-2002: Fixed evInteractorStyleImaging zoom bugs 24-jun-2002: Added setting of view-up vector to evVisualizer2D::ResetCamera() 19-jun-2002: Added check button for tile size in encoder GUI 18-jun-2002: Added tile size to encoder GUI 18-jun-2002: Implemented tiling of ROIs 14-jun-2002: Fixed gap between ROIs 14-jun-2002: Removed evVisualizerProperty 14-jun-2002: Implemented vtkCellPicker for ROI selection 13-jun-2002: Replaced use of vtkImageActor with vtkStructuredGrid 13-jun-2002: Added evVisualizerProperty 10-jun-2002: Implemented separate actors for ROIs in evVisualizer and derived classes 07-jun-2002: Added evVisualizerProp 07-jun-2002: Removed segmentation-map channel from transcoder and client 07-jun-2002: Segmentation map now integrated in transcoder-to-client communication of ROI components 14-may-2002: Added evSignalStartSession() 11-mar-2002: Added -v to evitad, verbose to evTranscoder::Transcode() 11-mar-2002: Added evInteractorStyleImaging - rubber-band selection of view area 04-mar-2002: Revised evFeatureSegmenterScanline::Segment(), eliminating "null" features with no area 28-feb-2002: Added evSegmentationMap::SetMaxROINumber() 11-feb-2002: Added evROI::ForwardTransform() that works with different transforms for each component 11-feb-2002: Added evROI::ExtractSubband() 11-feb-2002: Added evField::ExtractSubband() 05-feb-2002: Added setting of codec in evWriteSignificanceMap() in dsdetect; fixes bug in output of significance map Version 0.11: 04-feb-2002: Version 0.11 released 04-feb-2002: Updated Makefiles 01-feb-2002: Updated README 01-feb-2002: Updated for VTK 4.0 01-feb-2002: Removed evVTK.h 31-jan-2002: Fixed const error in prototype of evDataset::DistortionMSE() 30-jan-2002: Added existence test for _POSIX_PTHREAD_SEMANTICS in evConfig.h Version 0.10: 26-jan-2002: Version 0.10 released 24-jan-2002: Fixed seg fault in evCodecEmbedded::EncodeStart() 23-jan-2002: Changes for portability 21-jan-2002: Added moved ImageData from evVisualizer2DVector to evVisualizer2D and simplified evVisualized2DScalar 20-jan-2002: Added evVisualizer2DVector 18-jan-2002: Fixed vector-valued wavelet transform bug 17-jan-2002: Added evVisualizer2DVector, evGUIComponentBrowser 13-jan-2002: Added frame rate to evVisualizer::DumpImage() 02-jan-2002: Updated copyright year range for 2002 28-dec-2001: Added VisualizerParameters to evCodecEmbedded::EncodeHeader() evCodecEmbedded::DecodeHeader() 21-dec-2001: Added evVisualizer2D, evVisualizer2DScalar to replace evVisualizerSimple2D 19-dec-2001: Added auto filenames to evGUIEncoder 19-dec-2001: Fixed bug in evROI::InverseRasterScan() 19-dec-2001: Added evCodecEmbedded::DecodeActivateComponent() 19-dec-2001: Added evPriorityScheduleEntry::IsEqual() 19-dec-2001: Added evPrioritySchedule::MatchAndMoveEntries() 19-dec-2001: Added evTranscoder::ActivateComponent() 14-dec-2001: Added evRenderWindowInteractor 14-dec-2001: Updated README for FLTK and GUI 14-dec-2001: Added tooltips 13-dec-2001: Enabling output images in evita 13-dec-2001: evGUIClient and evita finished 12-dec-2001: Added filename to title of evGUIVisualizerWindow 12-dec-2001: Refined server-client communication and client GUI 11-dec-2001: Added evGUIVisualizerWindow 11-dec-2001: Added evSignal.h 11-dec-2001: Added evChannel::CleanupChildren() 10-dec-2001: Added evGUIClient 10-dec-2001: Added double-click selection of ROI 06-dec-2001: Added evGUIEncoder 05-dec-2001: Added evProgressReporter 04-dec-2001: Added encoding to evita_encoder 04-dec-2001: Added evGUIWindow, evGUIInstructionBox, evGUIProgress 03-dec-2001: Added evGUIMultiBrowser 01-dec-2001: Added evGUIFileInput, evGUIWizard, evGUIWizardPanel, evGUIObject, evLogoSmall 30-nov-2001: Added evita_encoder 30-nov-2001: Stopped decoder thread from quitting after all decoding done in evita 29-nov-2001: Added Components to dsencode and evita 26-nov-2001: Corrected bugs in evCodecSARL, evCodecEmbedded 25-nov-2001: Added Components to dsdetect 25-nov-2001: Added plot3dtods 21-nov-2001: Added Components to evCodecSARL 21-nov-2001: Added evCodecSARLComponentInfo 21-nov-2001: Added Components to evCodecEmbedded 20-nov-2001: Added Components to evDataset, evCodecNone 20-nov-2001: Added Components to evROI Version 0.9: 16-nov-2001: Version 0.9 released 16-nov-2001: Added output of significance map to dsdetect 02-nov-2001: Updates for Solaris compatibility 31-oct-2001: Fixed marbling problem in evFeatureDetectorSwirl 25-oct-2001: Added evFeatureSegmenter, evFeatureSegmenterScanline 25-oct-2001: Removed evFeatureDetectorSimple 24-oct-2001: Added evFeatureCompositor, evFeatureCompositorBooleanSum 24-oct-2001: Corrected radical bug in evFeatureDetectorSwirl::ComputeCompressibleTauBar() 23-oct-2001: Added evScalarField as a derived class 22-oct-2001: Added evAddress::operator+, evAddress::operator-, evAddress::operator+=, evAddress::operator-= 22-oct-2001: Added evAddress::operator==, evAddress::operator!=, evAddres::operator< 22-oct-2001: Added evVectorField::GetFieldMaxNorm(), evVectorField::GetFieldMinNorm() 22-oct-2001: Added evFeatureDetector::CalculateNormalMachNumber() 22-oct-2001: Added evFeatureDetectorExpansionFan 20-oct-2001: Added evFeatureDetectorShock 18-oct-2001: Added evFeatureDetectorSwirl 14-aug-2001: Modified evROI::Segment() so as to not assume all ROI numbers between 0 and MaxROINumber are present in segmentation mask 14-aug-2001: Changed evSegmentationMap::NumROIs to evSegmentationMap::MaxROINumber Version 0.8: 25-jul-2001: Version 0.8 released 25-jul-2001: Simplification of evCodecSARL by moving non-SARL code to evCodecEmbedded 25-jul-2001: Massive revisions related to addition of evVectorField as derived class of evField, including optimization for speed of evField access (replacing of evField::GetField() and evField::PutField with evField::operator[] for faster access) 19-jul-2001: Added evCodecEmbedded 12-jul-2001: Added evMapField, evScalarField 12-jul-2001: Simplified evWaveletTransformLazyWavelet to use LWT.lft 12-jul-2001: Refined evVector 11-jul-2001: Added evVector 11-jul-2001: Change to evField::GetField() return types; removed bound checking from evField::GetField() and evField::PutField() 11-jul-2001: evAddress and evField employ std::vector from STL 11-jul-2001: evField made into a template Version 0.7: 06-jul-2001: Version 0.7 released 06-jul-2001: Removed gate warning from evThreadedController::Receive() 06-jul-2001: Added wait on visualizer before terminating decoder thread 11-jun-2001: Added doxygen support 01-jun-2001: Added -g option to evita 01-jun-2001: Added color mapping to evVisualizerSimple2D::Setup 01-jun-2001: Added evVisualizerSimple2D::ImageMap 01-jun-2001: Removed evVisualizerSimple2D::ScaleShift 30-may-2001: Added -DVTK_USE_PTHREADS to Makefiles 17-may-2001: Added evCodecSARL::OriginalMasks 16-may-2001: Added evROIList::FindROI(), evROI::ObjectCoordinatesInRoi() 16-may-2001: Added evCodecSARL::WaitForVisualizer(), evCodecSARL::SignalVisualizer(), evCodecSARL::ProcessROISelections() 16-may-2001: Updated README for QccPack pthread support 16-may-2001: Added evVisualizerSimple2D::SelectROI() 16-may-2001: Added evInteractorStyle 16-may-2001: Added evVisualizerSimple2D::GetMousePosition() 15-may-2001: Added evVisualizer::GetMousePosition() 15-may-2001: Moved Render(), SetOutputImage(), and DumpImage() from evVisualizerSimple2D to evVisualizer Version 0.6: 14-may-2001: Version 0.6 released 14-may-2001: Added overload evWaveletTransform::ForwardTransform() and evWaveletTransform::InverseTransform() for no mask case 14-may-2001: Added evWaveletTransform::WaveletAnalysisSubsequence() and evWaveletTransform::WaveletSynthesisSubsequence() 14-may-2001: Removed evWaveletTransform::Create() 11-may-2001: Modified evCommon.h and #include's so as to speed compilation 11-may-2001: inlined some simple functions in evField 11-may-2001: Added evFeatureDetector, evFeatureDetectorSimple 11-may-2001: Renamed evCodec::SetCodecParameter() to evCodec::SetParameter() 10-may-2001: Renamed evSignificanceMap as evSegmentationMap 10-may-2001: Added evVisualizerRender() in evita.cc and call to XtAppAddWorkProc() 09-may-2001: Added XEvent loop to evVisualizerMain() 09-may-2001: Added evCodecSARL::SetupVisualizer(), evCodecSARL::SwapFields() 09-may-2001: Added evVisualizerMain() in evita.cc 09-may-2001: Added evMultiProcessController (modified from vtkMultiProcessController) 09-may-2001: Added evThreadedController (modified from vtkThreadedController) 07-may-2001: Added separate decoder thread in evita.cc 07-may-2001: Added evDecoderMain() in evita.cc 04-may-2001: vtkImageActor now used for rendering in evVisualizerSimple2D.cc 04-may-2001: evCodecSarl now uses evWaveletTransformCDF97 04-may-2001: Added evWaveletTransformCDF97.cc Version 0.5: 06-jan-2001: Version 0.5 released 06-jan-2001: Fixed dsdistortion 06-jan-2001: Copyright notice updated 06-jan-2001: Massive internal reorganization for segmenting, compositing, and representing dataset using lists of ROIs 06-jan-2001: dfencode, dfdecode, dfdistortion renamed dsencode, dsdecode, dsdistortion 06-jan-2001: evDataFieldCodec, evDataFieldCodecNone, evDataFieldCodecSARL rename evCodec, evCodecNone, and evCodecSARL 06-jan-2001: evDataField renamed evDataset and revised to include evROIList list 06-jan-2001: evROIList added 06-jan-2001: evROI added 06-jan-2001: evField made into non-abstract class Version 0.4: 30-nov-2000: Version 0.4 released 30-nov-2000: Updated installation instructions in README 30-nov-2000: Added Makefile.linux and Makefile.solaris 30-nov-2000: Added evConfig.h 30-nov-2000: Removed function hiding in evDataField, evSignificanceMap, evDataFieldCodecNone 30-nov-2000: Added double buffering to evVisualizerSimple2D::Setup() 16-nov-2000: evTranscoder and evDataFieldCodecSARL decoder modified so as to move entries as sent from TransmissionQueue to AlreadySentQueue 16-nov-2000: TransmissionQueue and AlreadySentQueue added to evTranscoder and evDataFieldCodec, replacing PrioritySchedule 16-nov-2000: Added evPrioritySchedule::Remove() 16-nov-2000: Added evPrioritySchedule::FirstEntry() 16-nov-2000: Added evPrioritySchedule::IsEmpty() 16-nov-2000: Changed socklen_t in evChannel::GetClientConnection() to int 16-nov-2000: Updated demo in README 16-nov-2000: Removed throw() from constructor in evWaveletTransformLinearLifting.cc 15-nov-2000: Makefile modified so that it works with Solaris make 15-nov-2000: Changed port numbers in evChannel.h to numbers unassigned by IANA 15-nov-2000: Removed call to inet_addr() in evChannel::ConnectToServer() 14-nov-2000: Fixed missing const on evFile::Seek() in evFile.cc 03-nov-2000: Added EncodeStart() and EncodeNext() to evDataFieldCodecNone and evDataFieldCodecSARL 03-nov-2000: Modified routines in evDataFieldCodecSARL to use class variables 03-nov-2000: Command parsing working in transcoder 03-nov-2000: Decode made modular through use of DecodeStart() and DecodeNext() routines 02-nov-2000: Added evTranscoder::GetCommand() 02-nov-2000: Added evChannel::ReadCommand(), evChannel::ReadCommandValue(), evChannel::WriteCommand() 02-nov-2000: Added evTranscoder::Start(), evTranscoder::Next(), evTranscoder::Stop() 02-nov-2000: Image-sequence output of visualization now working 02-nov-2000: Added evVisualizerSimple2D::DumpImage(), evVisualizerSimple2D::SetOutputImage() Version 0.3: 01-nov-2000: Version 0.3 released 01-nov-2000: Added DEMO instructions to README 31-oct-2000: Change static allocation of arrays to dynamic allocation via new globally 31-oct-2000: Changed to dynamic allocation rather than static allocation for evDataFieldCodecSARL::DecodeSARL() 31-oct-2000: Added socket option SO_REUSEADDR in evChannel::Create() 31-oct-2000: Made evSignificanceMapCodecNone use integers for reading/writing map values 31-oct-2000: Added call to evFile::Flush() within evBitBuffer::Flush() 30-oct-2000: Added call to evSignificanceMap::Read() in evDataFieldCodecSARL::Encode() 30-oct-2000: SignificanceMapChannel added to evitad.cc and evita.cc 29-oct-2000: PriorityScheduleChannel added to evitad.cc and evita.cc 29-oct-2000: Added evChannel::CopyFileToChannel() 29-oct-2000: Extensive changes to evFile - all Read() and Write() routines removed due to conflict with derived-class routines in evBitBuffer and resulting ambiguity in evChannel 29-oct-2000: ROIChannel renamed CommandChannel in evitad.cc and evita.cc 26-oct-2000: Set mode of ROIChannel to EVFILE_LINEBUFFERING in evita.cc 26-oct-2000: Added evFile::SetBufferMode() 26-oct-2000: Added evFile::Flush() 25-oct-2000: ROI now sent from client to server 25-oct-2000: Added timeout to evChannel::GetClientConnection() by calling select() 25-oct-2000: Added evChannel::IsReady() 24-oct-2000: Added port to evChannel::Create(), evChannel::ConnectToServer() 24-oct-2000: Added EVPORT_BISTREAMCHANNEL, EVPORT_ROICHANNEL 24-oct-2000: Renamed evSocketStream to evChannel 24-oct-2000: Removed bit_rate command-line parameter to evitad 24-oct-2000: Modified evita to read transcoded bitstream from socket 24-oct-2000: Modified evitad to output transcoded bitstream to socket 24-oct-2000: Added evSocketStream class 20-sep-2000: evVisualizer::Render() now called after each bit plane is read 20-sep-2000: Changed evDataFieldCodecSARL::SARLEncoding to evDataFieldCodecSARL::EncodeSARL() 20-sep-2000: Changed evDataFieldCodecSARL::SARLDecoding to evDataFieldCodecSARL::DecodeSARL() 20-sep-2000: Added EVPLUS and EVMINUS 20-sep-2000: Added evField::SetVisualizer(), evField::GetVisualizer() 20-sep-2000: Added Visualizer to evField 20-sep-2000: Removed evField::View() 20-sep-2000: Added max and min to header of compressed data field 20-sep-2000: Added evVisualizer, evVisualizerSimple2D 20-sep-2000: Corrected bugs 19-sep-2000: Moved mean and highest-bitplane info into header for SARL compressed data fields 19-sep-2000: Addition of mean added to evWaveletTransform::InverseTransform() 19-sep-2000: Subtraction of mean added to evWaveletTransform::ForwardTransform() 17-sep-2000: Modified evWaveletTransform and evWaveletTransformLinearLifting to make them transform each ROI independently 03-sep-2000: Fixed bug subband-length bug in evWaveletTransformLazyWavelet::ForwardTransform() 29-aug-2000: Added evDataFieldCodecSARL::Transcode() 29-aug-2000: Added evFile::Seek(), evFile::GetPosition() 29-aug-2000: Added evFilePosition 29-aug-2000: Moved allocation from evDataField::ReadHeader() to evDataField::Read(); likewise for evSignificanceMap 29-aug-2000: Added evField::SetSize(); made evField::Allocate() parameterless 25-aug-2000: Added evitad.cc 25-aug-2000: Added evPrioritySchedule::Insert(), evPrioritySchedule::Copy(), evPrioritySchedule::SorttedInsert(), evPrioritySchedule::Sort(), evPrioritySchedule::SelectROI() 25-aug-2000: Added evPrioritySchedule::Print(), evPriorityScheduleEntry::Print() 25-aug-2000: EVITA now compiles with VTK 25-aug-2000: Added evita.cc, evVTK.h, evField::View() 25-aug-2000: Fixed bug in evDataFieldCodecSARL::SARLDecoding() - check for return_value of 2 after DecodeSignificancePass() Version 0.2: 26-jul-2000: Version 0.2 released 26-jul-2000: evDataFieldCodecSARL modified to be "transcoder ready" - ROIs SARL-coded independently using stop/restart of arithmetic coder for each bitplane of each ROI 26-jul-2000: Added evPrioritySchedule, evPriorityScheduleEntry 18-jul-2000: Added evField - evSignificanceMap and evDataField modified so as to be derived classes of evField 18-jul-2000: Added evWaveletTransformLazyWavelet, evWaveletTransformLinearLifting, evWaveletTransform Version 0.1: 13-jul-2000: Version 0.1 released ==============================================================================