private void cleanUp() { // System.err.println( "VolumeImageViewerPoint dispose()" ); if (m_kHistogramPoints2D != null) { m_pkRenderer.ReleaseResources(m_kHistogramPoints2D); m_kHistogramPoints2D.dispose(); m_kHistogramPoints2D = null; } if (m_kEntropyPoints2D != null) { m_pkRenderer.ReleaseResources(m_kEntropyPoints2D); m_kEntropyPoints2D.dispose(); m_kEntropyPoints2D = null; } if (m_kImagePointsDual != null) { m_kImagePointsDual.DetachAllEffects(); m_pkRenderer.ReleaseResources(m_kImagePointsDual); m_kImagePointsDual.dispose(); m_kImagePointsDual = null; } if (m_kHistogramOutput != null) { m_kHistogramOutput.GetTarget(0).GetImage().dispose(); m_kHistogramOutput.GetTarget(0).dispose(); m_kHistogramOutput.TerminateBuffer(); m_kHistogramOutput.dispose(); } if (m_kHistogramOutputB != null) { m_kHistogramOutputB.GetTarget(0).GetImage().dispose(); m_kHistogramOutputB.GetTarget(0).dispose(); m_kHistogramOutputB.TerminateBuffer(); m_kHistogramOutputB.dispose(); } if (m_kEntropyOut != null) { m_kEntropyOut.GetTarget(0).GetImage().dispose(); m_kEntropyOut.GetTarget(0).dispose(); m_kEntropyOut.TerminateBuffer(); m_kEntropyOut.dispose(); } if (m_akImageReduceEntropy != null) { m_pkRenderer.ReleaseResources(m_akImageReduceEntropy); m_akImageReduceEntropy.dispose(); } if (m_akCollapse2D != null) { m_pkRenderer.ReleaseResources(m_akCollapse2D); m_akCollapse2D.dispose(); } if (m_akCollapseColumns != null) { m_pkRenderer.ReleaseResources(m_akCollapseColumns); m_akCollapseColumns.dispose(); } if (m_akCollapseRows != null) { m_pkRenderer.ReleaseResources(m_akCollapseRows); m_akCollapseRows.dispose(); } }
protected void CreateScene(GLAutoDrawable arg0) { int iWidth = m_iWidth; int iHeight = m_iHeight; int iDepth = m_kImageA.nDims == 3 ? m_kImageA.extents[2] : 1; m_kHistogramOutput = CreateRenderTarget(arg0, "Histogram2D", iWidth, iHeight); m_kHistogramOutputB = CreateRenderTarget(arg0, "Histogram2DB", iWidth, iHeight); m_kEntropyOut = CreateRenderTarget(arg0, "EntropyOut", 1, 1); if (CreateImageMesh(m_kImageA.extents[0], m_kImageA.extents[1], iDepth) == null) { CreateImageMesh(m_kImageA.extents[0], m_kImageA.extents[1], 1); m_iRenderLoops = iDepth; System.err.println("Switching to 2.5D"); } m_kImagePointsDual.AttachEffect(m_kImageEffectDual); m_kImageEffectDual.SetImageSize(m_kImageA.extents[0], m_kImageA.extents[1], iDepth); CreateHistogramMesh(m_iWidth, m_iHeight); m_akCollapse2D = new VolumeHistogramEffect(m_kHistogramOutput.GetTarget(0), VolumeHistogramEffect.NONE); m_akCollapseColumns = new VolumeHistogramEffect( m_kHistogramOutput.GetTarget(0), VolumeHistogramEffect.COLLAPSE_COLUMNS); m_akCollapseRows = new VolumeHistogramEffect( m_kHistogramOutput.GetTarget(0), VolumeHistogramEffect.COLLAPSE_ROWS); m_kHistogramPoints2D.AttachEffect(m_akCollapse2D); AlphaState pkAState = m_akCollapse2D.GetBlending(0); pkAState.BlendEnabled = true; pkAState.SrcBlend = AlphaState.SrcBlendMode.SBF_ONE; pkAState.DstBlend = AlphaState.DstBlendMode.DBF_ONE; m_kHistogramPoints2D.AttachEffect(m_akCollapseColumns); pkAState = m_akCollapseColumns.GetBlending(0); pkAState.BlendEnabled = true; pkAState.SrcBlend = AlphaState.SrcBlendMode.SBF_ONE; pkAState.DstBlend = AlphaState.DstBlendMode.DBF_ONE; m_kHistogramPoints2D.AttachEffect(m_akCollapseRows); pkAState = m_akCollapseRows.GetBlending(0); pkAState.BlendEnabled = true; pkAState.SrcBlend = AlphaState.SrcBlendMode.SBF_ONE; pkAState.DstBlend = AlphaState.DstBlendMode.DBF_ONE; double dSize = m_kImageA.dataSize; m_akImageReduceEntropy = new ImageReduceEffect(m_kHistogramOutputB.GetTarget(0), dSize); m_kEntropyPoints2D.AttachEffect(m_akImageReduceEntropy); /* m_kImageLineMinPass2a = new LineMinimizationEffect( m_kBracketOut.GetTarget(0), m_kEntropyOut.GetTarget(0), m_fMinDist, (float)dSize, m_kImageA.nDims ); m_kImageLineMinDual.SetImageSize( m_kImageA.extents[0],m_kImageA.extents[1],iDepth ); */ }
private void calcEntropy(ModelSimpleImage kImage, double dNumSamples) { m_kImagePointsDual.DetachAllEffects(); m_kImagePointsDual.AttachEffect(m_kImageEffectDual); m_pkRenderer.Resize( m_kHistogramOutput.GetTarget(0).GetImage().GetBound(0), m_kHistogramOutput.GetTarget(0).GetImage().GetBound(1)); m_kHistogramOutput.Enable(); m_pkRenderer.ClearColorDepth(); // m_pkRenderer.ClearBuffers(); int iDepth = m_kImageA.nDims == 3 ? m_kImageA.extents[2] : 1; float fInv2 = 1.0f / (iDepth); float fW; for (int i = 0; i < m_iRenderLoops; i++) { if (m_iRenderLoops == 1) { m_kImageEffectDual.ZSlice(0f); } else { fW = i * fInv2; m_kImageEffectDual.ZSlice(((2.0f * fW - 1.0f))); m_kImageEffectDual.UseZSlice(); } m_pkRenderer.Draw(m_kImagePointsDual); } // writeImage(); m_kHistogramOutput.Disable(); // printTarget( "HistoOut" , m_kHistogramOutput.GetTarget(0) ); m_pkRenderer.Resize( m_kHistogramOutputB.GetTarget(0).GetImage().GetBound(0), m_kHistogramOutputB.GetTarget(0).GetImage().GetBound(1)); m_kHistogramOutputB.Enable(); m_pkRenderer.ClearColorDepth(); // m_pkRenderer.ClearBuffers(); // m_kHistogramPoints2D.DetachAllEffects(); // m_kHistogramPoints2D.AttachEffect(m_akCollapse2D); m_pkRenderer.Draw(m_kHistogramPoints2D); // m_kHistogramPoints2D.DetachAllEffects(); // m_kHistogramPoints2D.AttachEffect(m_akCollapseColumns); // m_pkRenderer.Draw(m_kHistogramPoints2D); // m_kHistogramPoints2D.DetachAllEffects(); // m_kHistogramPoints2D.AttachEffect(m_akCollapseRows); // m_pkRenderer.Draw(m_kHistogramPoints2D); // m_pkRenderer.Draw(m_kHistogramPoints2D); m_kHistogramOutputB.Disable(); // printTarget( "HistoOut" , m_kHistogramOutputB.GetTarget(0) ); ReduceDualA(dNumSamples); }
public void setTransform(TransMatrixd kTransform) { if (kTransform.getDim() == 3) { m_kImageTransformd.MakeIdentity(); m_kImageTransformd.M00 = kTransform.M00; m_kImageTransformd.M01 = kTransform.M01; m_kImageTransformd.M02 = 0; m_kImageTransformd.M03 = kTransform.M02; m_kImageTransformd.M10 = kTransform.M10; m_kImageTransformd.M11 = kTransform.M11; m_kImageTransformd.M12 = 0; m_kImageTransformd.M13 = kTransform.M12; } else { m_kImageTransformd.Copy(kTransform); } if (m_kImageEffectDual != null) { /* Matrix4f toOrigin = new Matrix4f(false); Matrix4f fromOrigin = new Matrix4f(false); toOrigin.M03 = -m_kImageA.extents[0]/2.0f; toOrigin.M13 = -m_kImageA.extents[1]/2.0f; fromOrigin.M03 = m_kImageA.extents[0]/2.0f; fromOrigin.M13 = m_kImageA.extents[1]/2.0f; TransMatrix kMat = new TransMatrix(4,4); kMat.setTransform(0,0,0,0,0,15,1,1,1,0,0,0); m_kImageTransform.Copy(kMat); System.err.println( "captureImage" + m_iScreenCaptureCounter + " " + m_kImageTransform.ToString() ); m_kImageTransform.MakeIdentity(); m_kImageTransform.M00 = 0.9666009f; m_kImageTransform.M01 = -0.25924882f; m_kImageTransform.M02 = 0f; m_kImageTransform.M03 = 74.82431f; m_kImageTransform.M10 = 0.25845572f; m_kImageTransform.M11 = 0.9654881f; m_kImageTransform.M12 = 0f; m_kImageTransform.M13 = -57.23043f; System.err.println( m_kImageTransform.ToString() ); m_kImageTransform.Inverse(); System.err.println( m_kImageTransform.ToString() ); m_kImageTransform.MakeIdentity(); m_kImageTransform.M00 = 0.9652507f; m_kImageTransform.M01 = 0.25918508f; m_kImageTransform.M02 = 0f; m_kImageTransform.M03 = -56.043213f; m_kImageTransform.M10 = -0.25839218f; m_kImageTransform.M11 = 0.96636325f; m_kImageTransform.M12 = 0f; m_kImageTransform.M13 = 72.88661f; */ // m_kImageTransform.MultLeft( m_kToOriginInv ); // m_kImageTransform.Mult( m_kFromOriginInv ); // System.err.println( "setTransform " + m_kImageTransform.ToString() ); // m_kImageTransform.Inverse(); // m_kImageTransform.MultLeft( m_kToOrigin ); // m_kImageTransform.Mult( m_kFromOrigin ); // m_kImageTransform.MultLeft(fromOrigin); // m_kImageTransform.Mult(toOrigin); m_kImageEffectDual.SetTransform(m_kImageTransformd); // System.err.println( m_kImageTransform.ToString() ); } }
public void dispose(GLAutoDrawable arg0) { cleanUp(); if (m_kTextureA != null) { m_kTextureA.Release(); m_kTextureA.GetImage().dispose(); m_kTextureA.dispose(); m_kTextureA = null; } if (m_kTextureB != null) { m_kTextureB.Release(); m_kTextureB.GetImage().dispose(); m_kTextureB.dispose(); m_kTextureB = null; } if (m_kBracketPoints != null) { m_pkRenderer.ReleaseResources(m_kBracketPoints); m_kBracketPoints.dispose(); m_kBracketPoints = null; } if (m_kTransformPoints != null) { m_pkRenderer.ReleaseResources(m_kTransformPoints); m_kTransformPoints.dispose(); m_kTransformPoints = null; } if (m_kImageEffectDual != null) { m_pkRenderer.ReleaseResources(m_kImageEffectDual); m_kImageEffectDual.dispose(); } if (m_kImageLineMinDual != null) { m_pkRenderer.ReleaseResources(m_kImageLineMinDual); m_kImageLineMinDual.dispose(); } if (m_kCalcTransform != null) { m_pkRenderer.ReleaseResources(m_kCalcTransform); m_kCalcTransform.dispose(); } if (m_kBracketOut != null) { m_kBracketOut.GetTarget(0).GetImage().dispose(); m_kBracketOut.GetTarget(0).dispose(); m_kBracketOut.TerminateBuffer(); m_kBracketOut.dispose(); } if (m_kTransformOut != null) { m_kTransformOut.GetTarget(0).GetImage().dispose(); m_kTransformOut.GetTarget(0).dispose(); m_kTransformOut.TerminateBuffer(); m_kTransformOut.dispose(); } if (m_kBracketNewOut != null) { m_kBracketNewOut.GetTarget(0).GetImage().dispose(); m_kBracketNewOut.GetTarget(0).dispose(); m_kBracketNewOut.TerminateBuffer(); m_kBracketNewOut.dispose(); } ImageCatalog.GetActive().dispose(); VertexProgramCatalog.GetActive().dispose(); PixelProgramCatalog.GetActive().dispose(); CompiledProgramCatalog.GetActive().dispose(); super.dispose(); }