Example #1
0
        private void CheckPitchStatus(object state)
        {
            TableUsage previousTableUsage = m_TableUsage;
            m_TableUsage = (new Random()).NextDouble() > 0.5 ? TableUsage.Free : TableUsage.Busy;

            if (m_TableUsage == TableUsage.Busy && previousTableUsage != TableUsage.Busy) TableNowBusy(this, null);
            if (m_TableUsage == TableUsage.Free && previousTableUsage != TableUsage.Free) TableNowFree(this, null);
        }
Example #2
0
 public void initialize()
 {
     tableUsage = new TableUsage[FGTables.Length];
     for (int i = 0; i < FGTables.Length; ++i)
     {
         tableUsage [i]            = new TableUsage();
         tableUsage [i].tableIndex = i;
         tableUsage [i].parent     = this;
         //tableUsage [i].correspondences = correspondences;
         tableUsage [i].FGCorrespondences = FGCorrespondences;
         tableUsage [i].initialize(FGTables [i].nRows());
     }
 }
Example #3
0
        private void LatestImageAvailable(object state, Image<Bgr, byte> image)
        {
            m_PreviousTableUsage = m_TableUsage;
            m_DebugImage = image.Clone();
            if (m_Previousimage != null)
            {
                // Use an exponential-moving average concept to smooth data
                double tableBusyProb = ImageProcessing.TableBusyProbability(image, m_Previousimage, m_DebugImage);
                m_SEMA = (m_SEMA * (1f - RATE)) + (tableBusyProb * RATE);

                if (m_SEMA > 0.5) m_TableUsage = TableUsage.Busy;
                else m_TableUsage = TableUsage.Free;
            }
            m_Previousimage = image.Clone();

            if (m_TableUsage == TableUsage.Busy && m_PreviousTableUsage != TableUsage.Busy) TableNowBusy(this, null);
            if (m_TableUsage == TableUsage.Free && m_PreviousTableUsage != TableUsage.Free) TableNowFree(this, null);
        }
Example #4
0
 void Start()
 {
     tableUsage = new TableUsage();
     tableUsage.initialize(nRows());
 }