2017-01-10 13 views
1

Я работаю над требованием отображать значение яркости необработанного изображения YUV (1280 x 720) в виде графика. То есть, я разделяю данные Y и отображаю их в виде графика, в котором ось x - это ширина, а ось y - соответствующее значение Y.Android - проблема в обработке массовых точек с использованием графика Android

// Код

  int count = 0; 
      int byteValue = 0; 
      for (y = 0; y < height; y++) { 
       for (x = 0; x < width; x++) { 
        byteValue = pPictureIn[count++] & 0xff; 
         series.addLast(x, byteValue); 
       } 
      } 

      final PlotStatistics stats = new PlotStatistics(10, false); 

      plot.addListener(stats); 

      redrawer = new Redrawer(Arrays.asList(new Plot[]{plot}), 
      1, false); 

      format = new LineAndPointFormatter(this, R.xml.formatter); 

      plot.addSeries(series, format); 
      redrawer.start(); 

Я использую AndroidPlot для построения графика. И я добавляю все точки в серию. Здесь моя проблема в том, что если я попытаюсь отобразить точки, Мое приложение будет заморожено. И я использую режим рендеринга как USE_BACKGROUND_THREAD.

Кто-то, пожалуйста, помогите мне сделать очки одним выстрелом без каких-либо заморозков. Заранее спасибо

+1

На какой поток вы просматриваете каждый пиксель в своем изображении? –

+0

Я просматриваю пиксели в задаче Async, и я начал визуализировать метод post post. @Morrison Chang –

+0

Если я дам меньше очков за его рендеринг правильно. В противном случае приложение замерзает. @Morrison Chang –

ответ

0

Я собираюсь предположить, что вы используете SimpleXYSeries, что не оптимизировано для эффективности или скорости; вызовы addLast становятся чрезвычайно дорогими по мере увеличения количества очков. Использование фиксированной памяти XYSeries реализация обеспечит гораздо лучшую производительность. Если ваши данные изображения являются динамическими (поступающими из камеры или какого-либо другого потока изображений), тогда буфер буфера может быть хорошим дизайном, чтобы рассмотреть ... Я хотел бы взглянуть на FixedSizeEditableXYSeries в частности.

Кроме того, вы можете рассмотреть выборку данных для уменьшения размера с помощью SampledXYSeries.

В документе Advanced XY Series Types doc содержится более подробная информация о плюсах и минусах вышеупомянутых классов и некоторых других.

+0

Я предпочел рендеринг opengl для этой проблемы, и я закончил. Но все же, я посмотрю на него, поскольку я использую XYSeries для других целей. Спасибо, Nick @ Nick –