Imagine Cup 2014 through the eyes of C4L
Hello, dear Habr!
Here is the story of the C4L team, the National winner of the Imagine Cup 2014 in the Social Projects category!
It all started with the idea of two years ago - to create a system that will allow you to monitor the state of blood circulation in the body and, as a result, save millions of lives. Everyone knows that stroke causes not the best consequences (disability and mortality).
We decided not to remain indifferent and began to create our own system. Her idea is that anyone can shoot a 15-second video and get information about their condition. And someone else can do it. For example, you are worried about the health of your relatives, then you can install our application on their PC and ask them to be periodically checked on it.
The idea is that a standard camera can track changes in blood circulation that are invisible to the human eye. Our system, based on our unique mathematical apparatus, tracks these changes, analyzes them and displays the result not only numerical, but also graphical and diagrammatic.
The development of ARGUS is planned in 5 directions, but we put more emphasis on one direction - the Mobile version. The user algorithm with the ARGUS mobile application is simple:
face shooting (provides more complete information);
shooting a finger (gives general information);
The results are displayed not only by numerical indicators, but also by graphs. The user can also save all the results in Microsoft Health Vault and give access to their doctor.
The mobile client was developed for the Windows Phone 8 platform. The application makes a record of 18 seconds in duration (15 is enough, but 3 seconds is a margin), after which the user selects the key points for which the examination will be conducted. When points are selected, data is sent to Windows Azure Storage, and the data processing service begins its mysterious work.

Screenshot of video recording screen
The service, by the way, is also located in Windows Azure, this makes it possible to instantly exchange data between the source data storage that came from the client software and the virtual machine on which the service is spinning. The service extracts the data necessary for processing from the video (which is a secret), analyzes the data, calculates the pulse, determines the difference between the venous and arterial pulses, constructs pulse wave graphs for each point, gives a conclusion on the stability of the pulse (how it all happens, we also do not say).
At this time, the client sends requests to the service like “well, are you there soon?” (Or “is the result ready?”), When the processing is completed, the service sends the result to the client, which can be seen on the screen.

Survey Screenshot
Below is the code for sending data to the repository (there is nothing secret, this is almost the code from examples from Microsoft):
The bottom line is that we divide the files into parts and send them, and then glue them together.
Blocking Method:
Clinical trials of the application were also conducted:
To demonstrate all the capabilities of our ARGUSa, together with the cool designer Andrei Vaskov, we developed mock-ups of two devices:
1. smartDS - a docking station for a Mobile device, this is true for patients with neurological diseases and who have already had a stroke;
2. smartEYE is a device that allows you to make a complete overview of the entire room where it is installed. Servo, board and camera are installed in it.
After that, we printed all the necessary blanks on a 3D printer with the support of CyberCom and began to assemble our future prototypes. In the assembly, we were helped by the designers of the robot snowblower and robot promoter Promobot.
SmartDS prototype:

Ready and working smartEYE prototype:
Our C4L team decided to participate in the Imagine Cup 2014 to show what progress we have made since the past of the Imagine Cup, how we were able to translate our idea into a working prototype, what ideas for use cases appeared and how it can more globally affect our main goal - to give a chance to live and enjoy this life!
Our team showed up for IC 2014 in February. We passed the regional correspondence stage and got to the Regional finals, where we took 2nd place, but in view of our cool idea, we were invited to the Russian finals! We did an excellent job with the Russian finals - we won in the Social Projects category and took a special prize from Intel!

Now we have an online final, where we will choose a team that will represent our country at the Seattle Imagine Cup 2014 International Finals!
We do our best to go The International final of Imagine Cup 2014 by Microsoft. We hope will become the winners online finals and go to US Our slogan the same as the inscription on Imagine Cup 2014 badges - NEVER GIVE UP!
C4L - We give YOUR Chance 4 Life!
Here is the story of the C4L team, the National winner of the Imagine Cup 2014 in the Social Projects category!
Idea
It all started with the idea of two years ago - to create a system that will allow you to monitor the state of blood circulation in the body and, as a result, save millions of lives. Everyone knows that stroke causes not the best consequences (disability and mortality).
We decided not to remain indifferent and began to create our own system. Her idea is that anyone can shoot a 15-second video and get information about their condition. And someone else can do it. For example, you are worried about the health of your relatives, then you can install our application on their PC and ask them to be periodically checked on it.
The idea is that a standard camera can track changes in blood circulation that are invisible to the human eye. Our system, based on our unique mathematical apparatus, tracks these changes, analyzes them and displays the result not only numerical, but also graphical and diagrammatic.
Implementation
The development of ARGUS is planned in 5 directions, but we put more emphasis on one direction - the Mobile version. The user algorithm with the ARGUS mobile application is simple:
- when the application starts, the user goes through the registration / authorization procedure;
- selects a shooting mode:
face shooting (provides more complete information);
shooting a finger (gives general information);
- uploads video to Windows Azure, where the video is processed;
- looks at the results in the history of surveys.
The results are displayed not only by numerical indicators, but also by graphs. The user can also save all the results in Microsoft Health Vault and give access to their doctor.
ARGUS Mobile Client
The mobile client was developed for the Windows Phone 8 platform. The application makes a record of 18 seconds in duration (15 is enough, but 3 seconds is a margin), after which the user selects the key points for which the examination will be conducted. When points are selected, data is sent to Windows Azure Storage, and the data processing service begins its mysterious work.

Screenshot of video recording screen
The service, by the way, is also located in Windows Azure, this makes it possible to instantly exchange data between the source data storage that came from the client software and the virtual machine on which the service is spinning. The service extracts the data necessary for processing from the video (which is a secret), analyzes the data, calculates the pulse, determines the difference between the venous and arterial pulses, constructs pulse wave graphs for each point, gives a conclusion on the stability of the pulse (how it all happens, we also do not say).
At this time, the client sends requests to the service like “well, are you there soon?” (Or “is the result ready?”), When the processing is completed, the service sends the result to the client, which can be seen on the screen.

Survey Screenshot
Below is the code for sending data to the repository (there is nothing secret, this is almost the code from examples from 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 = newbyte[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);
The bottom line is that we divide the files into parts and send them, and then glue them together.
Тип FileBlock
publicclassFileBlock
{
publicstring Id
{
get;
set;
}
publicbyte[] Content
{
get;
set;
}
}
Blocking Method:
private IEnumerable<FileBlock> GetFileBlocks(byte[] fileContent, refdouble count)
{
HashSet<FileBlock> hashSet = new HashSet<FileBlock>();
if (fileContent.Length == 0) returnnew 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 = newbyte[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;
}
Clinical trials of the application were also conducted:
Prototypes
To demonstrate all the capabilities of our ARGUSa, together with the cool designer Andrei Vaskov, we developed mock-ups of two devices:
1. smartDS - a docking station for a Mobile device, this is true for patients with neurological diseases and who have already had a stroke;
2. smartEYE is a device that allows you to make a complete overview of the entire room where it is installed. Servo, board and camera are installed in it.
After that, we printed all the necessary blanks on a 3D printer with the support of CyberCom and began to assemble our future prototypes. In the assembly, we were helped by the designers of the robot snowblower and robot promoter Promobot.
SmartDS prototype:

Ready and working smartEYE prototype:
Imagine Cup 2014
Our C4L team decided to participate in the Imagine Cup 2014 to show what progress we have made since the past of the Imagine Cup, how we were able to translate our idea into a working prototype, what ideas for use cases appeared and how it can more globally affect our main goal - to give a chance to live and enjoy this life!
Our team showed up for IC 2014 in February. We passed the regional correspondence stage and got to the Regional finals, where we took 2nd place, but in view of our cool idea, we were invited to the Russian finals! We did an excellent job with the Russian finals - we won in the Social Projects category and took a special prize from Intel!

Now we have an online final, where we will choose a team that will represent our country at the Seattle Imagine Cup 2014 International Finals!
We do our best to go The International final of Imagine Cup 2014 by Microsoft. We hope will become the winners online finals and go to US Our slogan the same as the inscription on Imagine Cup 2014 badges - NEVER GIVE UP!
C4L - We give YOUR Chance 4 Life!