A solution to monitor cells viability and location

DURATION less than 1 month
TEAM 1 developer

The project is related to medicine. The customer’s company works to discover a cure for Alzheimer and other neurodegenerative diseases. It is their ambitious research, which is striving for a ground-breaking approach in the drug discovery. To test whether the medicine works or not, it is injected in the cells. Then the scientists are checking these cells through the microscope, to see if they are still alive or not, they do it once a day over 10 days. The project deals with determining the lifetime of each cell. The scientists have to remember that the cells are sensitive to the light; therefore, they are watched through the microscope once a day.

There are three main project objectives:

  1. Although the microscope provides scientists with a high precision of the details of cells, the human eye can still miss something important for the research. So, the first objective is to increase the research accuracy by means of Computer Vision.
  2. Looking through the microscope and checking the condition of every cell is time-consuming for the scientists, especially keeping in mind the problem mentioned above. So, the second objective is to reduce the time of research.
  3. The success of the treatment depends on how many cells remain alive after these 10 days of observation. So, the third objective is to determine how many cells remain alive, and how many cells die every day.

The main challenge on the project was to separate one cell from another. To be more specific: the cells are placed in a Petri dish and can form groups. So, we need to detect and separate each cell in the group to determine whether it’s alive or not.


To solve this problem, our developer used mathematical methods such as graph theory methods.

So, here is how it works. The end solution takes a picture as an input. For the first step, we have to detect the ‘single’ little cells on the original picture. Then the picture is blurring and we’re trying to detect big cells and cell groups. After that, we remove these big cells and try to separate each cell from the others in the group.

When all of the cells are found, we have to determine whether they still have neurites. Neurites are processes of the cell’s nerves. The presence of the neurites allows us to determine whether the cell is alive or not.


As a result of the project, the script was developed. As an input, it takes 10 images made via the microscope. Then the script recognizes the live and dead cells and marks them on the pictures. As an output, the script returns the images with the marked cells and several text reports which contain detailed information about the cells. The script is currently being used by our customer and is already helping them in their work.

Areas of expertise

Image processing // Mapping // Computer Vision

Additional Technologies

OpenCV //

AR Office application
AR Office application
A solution to detect a brachial plexus on an ultrasound image
A solution to detect a brachial plexus on an ultrasound image

Warning: sort() expects parameter 1 to be array, object given in /var/www/ on line 27

Fatal error: Uncaught Error: Cannot use object of type stdClass as array in /var/www/ Stack trace: #0 /var/www/ Ressio_Plugin_Lazyload->createSrcset(Object(Ressio_HtmlOptimizer_Stream_NodeWrapper)) #1 /var/www/ Ressio_Plugin_Lazyload->onHtmlIterateTagIMG(Object(Ressio_Event), Object(Ressio_HtmlOptimizer_Stream), Object(Ressio_HtmlOptimizer_Stream_NodeWrapper)) #2 /var/www/ Ressio_Dispatcher->triggerEvent('HtmlIterateTagI...', Array) #3 /var/www/ Ressio_HtmlOptimizer_Stream->htmlIterate('<!DOCTYPE html>...') #4 /var/www/ in /var/www/ on line 276