Пример #1
0
  int refinePixelStatitics() {
    stampIPOs();
    int[][] pixelsTemp = m_pnPixels;
    m_pnPixels = m_pnPixelsCompensated;

    m_cIMSC.reset();
    int len = m_cIMSC.m_nTotalSteps + 1;
    int i, c, step = 0;
    Point p = m_cIMSC.getPosition();
    int index = 0;
    ImageShape shape;
    Histogram hist;
    double mean, median;
    int y, y0 = 0;
    int pixel, nRef;
    double dsur;
    int numRings = m_cvRings.size();
    while (true) {
      p = m_cIMSC.getPosition();
      y = p.y;
      if (y > y0)
        IJ.showStatus(
            "refinePixelStatistics "
                + PrintAssist.ToString(y)
                + "-th line of "
                + PrintAssist.ToString(h)
                + " lines!");
      index = getPercentileIndex(step);
      dsur = m_pcRingMeanSems_Mean[index][m_nRMax].mean;
      ImageShapeHandler.copyElements(m_pnPixelsCompensated, m_pnPixelsTemp, m_cvRings, p);
      for (i = 0; i < numRings; i++) {
        pixel = (int) (m_pcRingMeanSems_Mean[index][i].mean - dsur);
        if (pixel < 1) break;
        shape = m_cvRings.get(i);
        shape.setCenter(p);
        ImageShapeHandler.addValue(m_pnPixelsTemp, shape, pixel);
      }
      nRef =
          (int) ImageShapeHandler.getMean(m_pnPixelsTemp, m_cRefRing, m_pnStamp, m_nExcludingType);
      CommonMethods.fillHistogram(
          m_pnPixelsTemp,
          nRef,
          m_cvRings.get(numRings - 1),
          p,
          m_cvHists.get(numRings - 1),
          m_pnStamp,
          m_nExcludingType);
      CommonMethods.fillHistograms(m_pnPixelsTemp, nRef, m_cvRings, p, m_cvHists);
      for (i = 0; i < numRings; i++) {
        hist = m_cvHists.get(i);
        mean = hist.getMeanSem().mean;
        median = hist.getPercentileValue();
        m_pdRingMean[step][i] = mean;
        m_pdRingMedian[step][i] = median;
      }
      //            m_pnPixels_trail[step]=m_pnPixelsTemp[p.y][p.x]-nRef;
      if (m_cIMSC.done()) break;
      m_cIMSC.move();
      step++;
    }
    for (c = 0; c < numRings; c++) {
      m_pcMeanSems_Median[c] = CommonStatisticsMethods.buildMeanSem(m_pdRingMedian, c);
      m_pcMeanSems_Mean[c] = CommonStatisticsMethods.buildMeanSem(m_pdRingMean, c);
    }
    if (m_bPresetPoints) {
      len = pixelsOfPresetPoints.size();
      int num = len / m_nPercentileDivision;
      int rI, rF;
      for (i = 0; i < m_nPercentileDivision; i++) {
        rI = Math.max(0, (int) ((i - .5) * num));
        rF = Math.min(len - 1, (int) ((i + .5) * num));
        for (c = 0; c < numRings; c++) {
          m_pcRingMeanSems_Median[i][c] =
              CommonStatisticsMethods.buildMeanSem(m_pdRingMedian, rI, rF, 1, c);
          m_pcRingMeanSems_Mean[i][c] =
              CommonStatisticsMethods.buildMeanSem(m_pdRingMean, rI, rF, 1, c);
        }
      }
    }
    m_pnPixels = pixelsTemp;
    return 1;
  }