void OsgSimulator::Initialize(int argc, const char **argv) { #ifndef WIN32 std::string strVersion = osgUtilGetVersion(); strVersion = "/usr/lib/osgPlugins-" + strVersion; osgDB::setLibraryFilePathList(strVersion); #endif InitializeStructures(); m_oDataChartMgr.Initialize(); m_oExternalStimuliMgr.Initialize(); if(m_lpSimRecorder) m_lpSimRecorder->Initialize(); //realize the osg viewer m_vsWinMgr->Realize(); }
template <class P> static void Apply( const GenericImage<P>& image, MultiscaleMedianTransform& T ) { InitializeStructures(); bool statusInitialized = false; StatusMonitor& status = (StatusMonitor&)image.Status(); try { if ( status.IsInitializationEnabled() ) { status.Initialize( String( T.m_medianWaveletTransform ? "Median-wavelet" : "Multiscale median" ) + " transform", image.NumberOfSelectedSamples()*T.m_numberOfLayers*(T.m_medianWaveletTransform ? 2 : 1) ); status.DisableInitialization(); statusInitialized = true; } GenericImage<P> cj0( image ); cj0.Status().Clear(); for ( int j = 1, j0 = 0; ; ++j, ++j0 ) { GenericImage<P> cj( cj0 ); cj.Status() = status; MedianFilterLayer( cj, T.FilterSize( j0 ), T.m_parallel, T.m_maxProcessors ); if ( T.m_medianWaveletTransform ) { GenericImage<P> w0( cj0 ); GenericImage<P> d0( cj0 ); d0 -= cj; for ( int c = 0; c < d0.NumberOfChannels(); ++c ) { w0.SelectChannel( c ); d0.SelectChannel( c ); cj.SelectChannel( c ); double t = T.m_medianWaveletThreshold*d0.MAD( d0.Median() )/0.6745; for ( typename GenericImage<P>::sample_iterator iw( w0 ), id( d0 ), ic( cj ); iw; ++iw, ++id, ++ic ) if ( Abs( *id ) > t ) *iw = *ic; } w0.ResetSelections(); cj.ResetSelections(); w0.Status() = cj.Status(); LinearFilterLayer( w0, T.FilterSize( j0 ), T.m_parallel, T.m_maxProcessors ); cj = w0; } status = cj.Status(); cj.Status().Clear(); if ( T.m_layerEnabled[j0] ) { cj0 -= cj; T.m_transform[j0] = Image( cj0 ); } if ( j == T.m_numberOfLayers ) { if ( T.m_layerEnabled[j] ) T.m_transform[j] = Image( cj ); break; } cj0 = cj; } if ( statusInitialized ) status.EnableInitialization(); } catch ( ... ) { T.DestroyLayers(); if ( statusInitialized ) status.EnableInitialization(); throw; } }