Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lemonpi/everest

Page zooming based on distance of face from screen
https://github.com/lemonpi/everest

Last synced: 6 days ago
JSON representation

Page zooming based on distance of face from screen

Awesome Lists containing this project

README

        

Everest is a Chrome extension that enlarges text on web pages when you move away from the computer screen.

#### Inspiration

Computer users often sit in one static position, which leads to pain and higher risk of health issues. To reduce strain, one should frequently change one's posture while using a computer. However, Herman Miller, a high-end furniture maker, noted in their [research](http://www.hermanmiller.com/research/solution-essays/maintaining-concordance-as-seated-postures-change.html) that ability to view materials on the screen is the most paramount need for computer users, and will stay in unhealthy postures if the alternative is an illegible screen.

When our team members worked together previously, we noted that one team member always changes the zoom level in Google Chrome as he changes his posture so that text stays legible when he moves away from the screen. We realized that this zooming can be automated by using a webcam to measure the distance between the user and the screen, and automatically adapt the text size according to the user's position. In doing so, we hope to make posture changes more natural, and thus improve the working conditions of computer users.

#### Implementation

We implemented Everest as a lightweight Chrome extension that runs in the background to detect the user's position and zooms the page. The user can enable or disable the automatic zoom with a single click, and can press a key sequence (default to Ctrl+Shift+3) to recalibrate the resting position.

The core facial detection is handled by [Neave's face detection library](https://github.com/neave/face-detection). To access the webcam, we used WebRTC, part of HTML5, to stream the video data. We tweaked the detection frequency for efficiency: the current version samples the video at 4/3Hz to avoid CPU usage. In initial testing, we discovered that the page would often "jitter", where the zoom will repeatedly change as the video data changes slightly, which disrupts reading. We fixed this problem by avoiding zoom changes that are less than 10%.

The actual zooming is performed by Chrome's zoom API, which was recently introduced on the Dev channel in Chrome 42, so this extension is one of the first extensions to take advantage of this feature.

#### Try it

Everest can be [downloaded through the Chrome Webstore](https://chrome.google.com/webstore/detail/everest/obnakgpigfngpoodnpjjbjpbohocehja). Note that currently, you will need Chrome 42 or above to run this addon: to upgrade Chrome 42, you can switch to the Dev channel following [these instructions](http://www.chromium.org/getting-involved/dev-channel).