Imagine Cup 2014 глазами C4L

    Здравствуй, дорогой Хабр!

    Перед Вами история команды C4L, Национального победителя Imagine Cup 2014 в категории «Социальные проекты»!

    Идея


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

    Мы решили не оставаться безучастными и начали создавать свою систему. Ее идея в том, что любой человек может снять 15-секундное видео и получить данные о своем состоянии. А еще это может делать кто-нибудь другой. Например, Вы переживаете за здоровье своих родственников, тогда Вы сможете установить наше приложение на их ПК и попросить их периодический проверяться на нем.
    Фишка идеи заключается в том, что стандартная камера может отследить изменения кровообращения, незаметные человеческому глазу. Наша система, основанная на нашем уникальном математическом аппарате, отслеживает эти изменения, анализирует их и выводит результат не только числовой, но и графический и диаграммный.

    Реализация


    Развитие ARGUS планируется в 5 направлениях, но мы делали больший упор на одно направление — Мобильная версия. Алгоритм работы пользователя с мобильным приложением ARGUS прост:
    • при запуске приложения пользователь проходит процедуру регистрации/авторизации;
    • выбирает режим съемки:

    съемка лица (дает более полные сведения);
    съемка пальца (дает общие сведения);

    • загружает видео в Windows Azure, где происходит обработка видео;
    • смотрит результаты в истории обследований.

    Результаты выводятся не только числовыми показателями, но и графиками. Пользователь также может сохранять все результаты в Microsoft Health Vault и дать доступ к ним своему лечащему врачу.

    Мобильный клиент ARGUS


    Мобильный клиент разработан для платформы Windows Phone 8. Приложение делает запись продолжительностью 18 секунд (достаточно и 15, но 3 секунды — запас), после чего пользователь выбирает ключевые точки, по которым будет вестись обследование. Когда точки выбраны, данные отправляются в хранилище Windows Azure Storage, и сервис обработки данных начинает свою таинственную работу.
    image
    Скриншот экрана записи видео

    Сервис, кстати расположен тоже в Windows Azure, это дает возможность моментального обмена данными между хранилищем исходных данных, которые поступили с клиентского ПО и виртуальной машины, на которой «крутится» сервис. Сервис извлекает из видео необходимые для обработки данные (какие — секрет), проводит анализ данных, подсчитывает пульс, определяет разность ваз венозного и артериального пульсов, строит графики пульсовой волны для каждой из точек, дает заключение о стабильности пульса (как все это происходит, мы тоже не скажем).
    В это время клиент шлет сервису запросы типа «ну, ты скоро там?» ( или «результат готов?»), когда обработка завершается, сервис отправляет клиенту результат, который можно увидеть на экране.
    image
    Скриншот результатов обследования

    Ниже приведен код отправки данных в хранилище (тут ничего секретного, это почти код из примеров от Microsoft):
    //Данные для подключения
    string AccountKey = ВашКлючОтХранилища;
    string AccountName = УчетнаяЗаписьХранилища
    string ContainerName = ИмяКонтейнераВКоторомХранятсяДанные;
    
    //Клиент для работы с хранилищем
    CloudBlobClient blobStorage;
    //Строка подключения
    Uri baseUri = new Uri(string.Format("http://{0}.blob.core.windows.net", AccountName));
    //Данные пользователя
    StorageCredentials cred = new StorageCredentials(AccountName, AccountKey);
    blobStorage = new CloudBlobClient(baseUri, cred);
    //Контейнер блобов
    CloudBlobContainer blobContainer = blobStorage.GetContainerReference(ContainerName);
    //Блоб и отправка данных в хранилище azure
    CloudBlockBlob blobFromSASCredential = blobContainer.GetBlockBlobReference(isoVideoFileName);//Придумать имя файла
    isoVideoFile = new IsolatedStorageFileStream(storageFile.Path,
    FileMode.Open, FileAccess.Read,
    IsolatedStorageFile.GetUserStoreForApplication());
    byte[] fileContent = new byte[isoVideoFile.Length];
    await isoVideoFile.ReadAsync(fileContent, 0, fileContent.Length);
    HashSet<string> blocklist = new HashSet<string>();
    var fileBlocks = GetFileBlocks(fileContent, ref countOfFileBlocks);
    foreach (FileBlock block in fileBlocks)
    {
    await blobFromSASCredential.PutBlockAsync(
    block.Id,
    new MemoryStream(block.Content, true),
    null);
    blocklist.Add(block.Id);}
    await blobFromSASCredential.PutBlockListAsync(blocklist);
    


    Суть в том, что мы делим файлы на части и высылаем их, а потом склеиваем.
    Тип FileBlock 
    public class FileBlock
    {
    public string Id
    {
    get;
    set;
    }
    public byte[] Content
    {
    get;
    set;
    }
    }
    


    Метод разбиения на блоки:
    private IEnumerable<FileBlock> GetFileBlocks(byte[] fileContent, ref double count)
    {
    HashSet<FileBlock> hashSet = new HashSet<FileBlock>();
    if (fileContent.Length == 0) return new HashSet<FileBlock>();
    int blockId = 0;
    int ix = 0;
    int currentBlockSize = MaxBlockSize;
    while (currentBlockSize == MaxBlockSize)
    {
    if ((ix + currentBlockSize) > fileContent.Length) currentBlockSize = fileContent.Length - ix;
    byte[] chunk = new byte[currentBlockSize];
    Array.Copy(fileContent, ix, chunk, 0, currentBlockSize);
    hashSet.Add(
    new FileBlock()
    {
    Content = chunk,
    Id = Convert.ToBase64String(System.BitConverter.GetBytes(blockId))
    });
    ix += currentBlockSize;
    blockId++;
    }
    count = blockId;
    return hashSet;
    }
    


    Также были проведены клинические испытания приложения:


    Прототипы


    Для демонстрации всех возможностей нашего ARGUSa мы совместно с крутым дизайнером Андреем Васьковым разработали макеты двух устройств:
    1. smartDS — док-станция для Мобильного устройства, это актуально для больных неврологическими заболеваниями и уже перенесших инсульт;
    2. smartEYE — это устройство, позволяющее совершать полный обзор по всему помещению, где оно установлено. В него установлены сервы, плата и камера.
    После этого мы напечатали все необходимы заготовки на 3D-принтере при поддержке компании CyberCom и начали собирать наши будущие прототипы. В сборке нам помогали конструкторы робота-снегоуборщика и робота-промоутера Promobot.
    Прототип smartDS:
    image
    Готовый и работающий прототип smartEYE:


    Imagine Cup 2014


    Наша команда C4L решила участвовать в Imagine Cup 2014, чтобы показать, какого прогресса мы достигли с прошлого Imagine Cup, как мы смогли свою идею воплотить в работающий прототип, какие идеи вариантов использования появились и как это может более глобально повлиять на нашу главную цель – подарить шанс жить и радоваться этой жизни!
    Наша команда заявилась на IC 2014 в феврале. Мы прошли заочный региональный этап и попали на Региональный финал, на котором заняли 2 место, но ввиду нашей крутой идеи, нас пригласили на Российский финал! С Российскими финалом мы отлично справились – мы выиграли в категории «Социальные проекты» и взяли спецприз от компании Intel!
    image
    Сейчас нам предстоит онлайн финал, где выберут команду, которая будет представлять нашу страну на Международном финале Imagine Cup 2014 в Сиэтле!
    Мы делаем все возможное, чтобы to go The International final of Imagine Cup 2014 by Microsoft. We hope will become the winners online finals and go to U.S. Our slogan the same as the inscription on Imagine Cup 2014 badges – NEVER GIVE UP!
    C4L — We give YOUR Chance 4 Life!
    Поделиться публикацией

    Комментарии 6

      0
      Молодцы! Будем болеть за вас. Проект действительно стоящий и интересный!
        0
        Спасибо большое! Нам очень важна Ваша поддержка!))
        +2
        Не являются ли ваши «секреты» просто развитием вот этого — www.xakep.ru/post/60458/?
          –2
          Да, действительно, первоначально мы увидели идею MIT, но внутри нашей системы лежит построенный нами математический аппарат. В их идее только замер пульса, в нашей же — более подробные и углубленные данные, не только о пульсе. В этих данных и есть «секрет».
          0
          Расскажите побольше про анализ системы кровообращения.
          • Что дает сдвиг фаз в артериальном и венозном пульсе?
          • Что еще кроме пульса можно оценить?
          • Дают ли какие-нибудь сведения производные по левому/правому склону ваших пилообразных кривых и всегда ли они такие симметричные?

          Что лучше, ваше приложение или нагрудный пульсометр?
            +1
            1. Ответ от медика: Совпадение фаз артериального и венозного пульса могут свидетельствовать о:
            -недостаточности трёхстворчатого (трикуспидального) клапана сердца
            -некоторых формах нарушения ритма сердца (например, фибрилляция предсердий)
            -венозном застое в большом круге кровообращения и др.
            2. Пока наш прототип не доведен до совершенства, я не могу говорить о всех возможностях нашей системы. Сейчас используется более грубая фильтрация (насколько я понимаю) + есть помехи, поэтому окончательная форма кривых будет другая (в идеале должна быть похожа на классическую сфигмограмму)
            3. секрет и нет, в абсолютном большинстве случаев они отличаются как по форме, так и по амплитуде
            4. наше приложение мобильно и удобно в использовании, для того, чтобы проследить за состоянием своей системы кровообращения достаточно смартфона с камерой и все. Приложение будет стоить дешевле, чем пульсометр. Пользователь сможет сохранять данные в MS Health Vault и дать доступ врачу к ним. Врач сможет следить за состоянием больного и в критическом случае просить его срочно пройти более тщательное обследование или госпитализироваться

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое