Какие методы/алгоритмы используются для распознавания жеста в мультисенсорной среде?

Создание CellRangeAddress для всего столбца, кроме первой строки, означает, что CellRangeAddress начинается со строки 2 и идет до максимального количества строк. Это зависит от SpreadsheetVersion. В EXCEL2007 максимальное количество строк составляет 2 ^ 20 = 1048576. В EXCEL97 максимальное количество строк составляет 2 ^ 16 = 65536.

Используя SpreadsheetVersion , мы можем получить это различное максимальное количество строк в зависимости от SpreadsheetVersion.

Пример:

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.ss.SpreadsheetVersion;

class CreateCellRangeAddressList {

 public static void main(String[] args) throws Exception {

  //Workbook workbook = new XSSFWorkbook(); 
  Workbook workbook = new HSSFWorkbook(); 

// ...

  int lastRow = workbook.getSpreadsheetVersion().getLastRowIndex();

  CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(
   1, // row 2
   lastRow, 
   2, // column C
   2);

System.out.println(cellRangeAddressList.getCellRangeAddress(0)); 
//C2:C1048576 or C2:C65536 dependent on SpreadsheetVersion

// ...

 }
}

Поскольку вопрос был о проверке данных для всего столбца, кроме первой строки, давайте рассмотрим пример для этого.

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddressList;

class CreateExcelDataValidationListsWholeColumn {

 public static void main(String[] args) throws Exception {

  //Workbook workbook = new HSSFWorkbook();
  Workbook workbook = new XSSFWorkbook();

  Sheet sheet = workbook.createSheet("Sheet1");

  sheet.createRow(0).createCell(1).setCellValue("col2Head");

  //data validation in column B, except first row:
  DataValidationHelper dvHelper = sheet.getDataValidationHelper();
  DataValidationConstraint dvConstraint = dvHelper.createExplicitListConstraint(new String[]{"X", "Y"}) ;
  int lastRow = workbook.getSpreadsheetVersion().getLastRowIndex();
  CellRangeAddressList addressList = new CellRangeAddressList(1, lastRow, 1, 1); //B2:B1048576      
  DataValidation validation = dvHelper.createValidation(dvConstraint, addressList);
  sheet.addValidationData(validation); // data validation for B2:B1048576 

  FileOutputStream out = null;
  if (workbook instanceof HSSFWorkbook) {
   out = new FileOutputStream("CreateExcelDataValidationListsWholeColumn.xls");
  } else if (workbook instanceof XSSFWorkbook) {
   out = new FileOutputStream("CreateExcelDataValidationListsWholeColumn.xlsx");
  }
  workbook.write(out);
  workbook.close();
  out.close();

 }
}

Это приводит к листу XML следующим образом:


 
 
  
 
 
 
  0
 
 
  
    "X,Y"
  
 
 

И при использовании HSSFWorkbook результирующий CreateExcelDataValidationListsWholeColumn.xls имеет размер 4 КБайт.

18
задан Glorfindel 7 March 2019 в 16:44
поделиться

6 ответов

Распознавание жеста, поскольку я видел его так или иначе, обычно реализуется с помощью методов машинного обучения, подобных программному обеспечению распознавания изображений. Вот прохладный проект на codeproject о выполнении распознавания жеста мыши в c#. Я уверен, что понятия весьма схожи, так как можно, вероятно, уменьшить проблему вниз до 2D пространства. Если Вы получаете что-то работающее с этим, я хотел бы видеть его. Большая идея проекта!

11
ответ дан 30 November 2019 в 08:58
поделиться

Видео того, что было сделано с этим видом технологии, если кому-либо интересно?

Pattie Maes демонстрирует Шестое чувство - TED 2009

1
ответ дан 30 November 2019 в 08:58
поделиться

Один способ посмотреть на него как сжатие / проблема распознавания. В основном Вы хотите взять целый набор данных, вывести большую часть из него и категоризировать остаток. Если бы я делал это (с нуля), то я, вероятно, продолжил бы двигаться следующим образом:

  • работа с прокручивающимся окном
  • истории берет центр тяжести четырех точек в кадре запуска, сохраняет его и вычитает его из всех положений во всех кадрах.
  • фактор каждый кадр в два компонента: форма совокупности и перемещение он - CofG относительно последнего кадра.
  • сохраняют абсолютный CofG для последнего кадра также
  • , серия изменений CofG дает, Вы сильно ударяете, волны, и т.д.
  • , серия превращающейся совокупности дает, Вы зажимаете, и т.д.

После наблюдения Вашей фотографии (две точки на каждой руке , не четыре точки на одной, doh!) я изменил бы вышеупомянутое следующим образом:

  • Делают вычисление CofG на парах, с протестами что:
    • , Если существует четыре видимые точки, пары выбраны для уменьшения продукта внутрипарных расстояний
    • , Если существует три видимые точки, самые близкие два являются одной парой, другой - другой
    • Использование, предшествующее / после кадров для переопределения при необходимости
  • Вместо совокупности, у Вас есть вложенная структура расстояния / пары ориентации (т.е. один D/O между руками и еще один для каждой руки).
  • Передача полные уменьшенные данные к устройствам распознавания для каждого жеста, и позволяют им разобраться в том, о чем они заботятся.
  • , Если Вы хотите стать милыми, сделайте немного DSL для распознавания шаблонов и вещей записи как:

    fire when
        in frame.final: rectangle(points) 
      and
        over frames.final(5): points.all (p => p.jerk)
    

    или

    fire when
        over frames.final(3): hands.all (h => h.click)
    
8
ответ дан 30 November 2019 в 08:58
поделиться

Я не являюсь очень хорошо сведущим в этом типе математики, но я считал где-нибудь, что люди иногда используют Цепи Маркова или скрытые марковские модели , чтобы сделать Распознавание Жеста.

, Возможно, кто-то с немного большим количеством знаний в этой стороне Информатики может осветить его далее и предоставить еще некоторую подробную информацию.

0
ответ дан 30 November 2019 в 08:58
поделиться

Самые простые инструменты распознавания жеста я посмотрел на использование основанный на векторе шаблон для распознавания их. Например, можно определить правильный сильный удар как "0", галочка как "-45, 45, 45", по часовой стрелке круг как "0,-45,-90,-135, 180, 135, 90, 45, 0", и так далее.

0
ответ дан 30 November 2019 в 08:58
поделиться

Допустить ошибку.. Я работал над распознаванием жеста в течение прошлого года или поэтому теперь, но я не хочу говорить слишком много, потому что я пытаюсь запатентовать свою технологию:), Но... у нас была некоторая удача с адаптивным повышением, хотя, что Вы делаете существенно отличающиеся взгляды. У Вас только есть 4 точки данных для обработки, таким образом, я не думаю, что действительно необходимо "уменьшить" что-либо.

то, Что я исследовал бы, - то, как программы как Flash превращают нарисованный круг от руки в фактический круг. Кажется, что Вы могли отследить точки на время приблизительно секунды, и затем "сглаживать" путь некоторым способом, и затем Вам могло, вероятно, сойти с рук жесткое кодирование Ваши жесты (при создании их достаточно простыми). Иначе, да, Вы собираетесь хотеть использовать алгоритм изучения. Нейронные сети могли бы работать... Я не знаю. Просто выбрасывание идей:), Возможно, смотрят на то, как OCR сделан также... или даже , Hough преобразовывает . Это смотрит на меня как это, проблема распознавания форм больше, чем это имеет распознавание жестов.

0
ответ дан 30 November 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: