## Inspiration

We wanted to make a simple product that sharpens blurry images without a lot of code! This could be used as a preprocessing step for image recognition or a variety of other image processing tasks. It can also be used as a standalone product to enhance old images.

## What it does

Our product takes blurry images and makes them more readable. It also improves IBM Watson's visual recognition functionality. See our powerpoint for more information!

## How we built it

We used python3 and the IBM Watson library.

## Challenges we ran into

Processing images takes a lot of time!

## Accomplishments that we're proud of

Our algorithm improves Watson's capabilities by 10% or more!

## What we learned

Sometimes, simple is better :)

## What's next for Pixelator

We could incorporate our product into an optical character recognition system, or try to incorporate our system as a preprocessing step in a pipeline involving e.g. convolutional neural nets to get even greater accuracy with the cost of higher latency.
## Inspiration

Alex K's girlfriend Allie is a writer and loves to read, but has had trouble with reading for the last few years because of an eye tracking disorder. She now tends towards listening to audiobooks when possible, but misses the experience of reading a physical book.

Millions of other people also struggle with reading, whether for medical reasons or because of dyslexia (15-43 million Americans) or not knowing how to read. They face significant limitations in life, both for reading books and things like street signs, but existing phone apps that read text out loud are cumbersome to use, and existing "reading glasses" are thousands of dollars!

Thankfully, modern technology makes developing "reading glasses" much cheaper and easier, thanks to advances in AI for the software side and 3D printing for rapid prototyping. We set out to prove through this hackathon that glasses that open the world of written text to those who have trouble entering it themselves can be cheap and accessible.

## What it does

Our device attaches magnetically to a pair of glasses to allow users to wear it comfortably while reading, whether that's on a couch, at a desk or elsewhere. The software tracks what they are seeing and when written words appear in front of it, chooses the clearest frame and transcribes the text and then reads it out loud.

## How we built it

**Software (Alex K)** -
On the software side, we first needed to get image-to-text (OCR or optical character recognition) and text-to-speech (TTS) working. After trying a couple of libraries for each, we found Google's Cloud Vision API to have the best performance for OCR and their Google Cloud Text-to-Speech to also be the top pick for TTS.

The TTS performance was perfect for our purposes out of the box, but bizarrely, the OCR API seemed to predict characters with an excellent level of accuracy individually, but poor accuracy overall due to seemingly not including any knowledge of the English language in the process. (E.g. errors like "Intreduction" etc.) So the next step was implementing a simple unigram language model to filter down the Google library's predictions to the most likely words.

Stringing everything together was done in Python with a combination of Google API calls and various libraries including OpenCV for camera/image work, pydub for audio and PIL and matplotlib for image manipulation.

**Hardware (Alex G)**: We tore apart an unsuspecting Logitech webcam, and had to do some minor surgery to focus the lens at an arms-length reading distance. We CAD-ed a custom housing for the camera with mounts for magnets to easily attach to the legs of glasses. This was 3D printed on a Form 2 printer, and a set of magnets glued in to the slots, with a corresponding set on some NerdNation glasses.

## Challenges we ran into

The Google Cloud Vision API was very easy to use for individual images, but making synchronous batched calls proved to be challenging!
Finding the best video frame to use for the OCR software was also not easy and writing that code took up a good fraction of the total time.

Perhaps most annoyingly, the Logitech webcam did not focus well at any distance! When we cracked it open we were able to carefully remove bits of glue holding the lens to the seller’s configuration, and dial it to the right distance for holding a book at arm’s length.

We also couldn’t find magnets until the last minute and made a guess on the magnet mount hole sizes and had an *exciting* Dremel session to fit them which resulted in the part cracking and being beautifully epoxied back together.

## Acknowledgements

The Alexes would like to thank our girlfriends, Allie and Min Joo, for their patience and understanding while we went off to be each other's Valentine's at this hackathon.
## Inspiration

After looking into the materials challenge, we realized that our backgrounds in image processing as well as elegant UIs made for a perfect way to gather information about microstructures and display it in a way that could allow for simple, autonomous analysis.

## What it does

Our project is split into two parts:

First, using the provided datasets and python's OpenCV library, we use image processing to detect grain boundaries and different phases of images. This information is used to calculate various traits of the sample presented (such as the grain size, distribution, and phase fractions). This information is displayed in our web app using flask and bulma.

With our Selenium web scraper, we scrape the NIMS (the National Institute for Materials Science Japan) for microstructures. Then, using an automated photoshop workflow, they're cropped and organized based on magnification. These images are now ready to be processed using the aforementioned techniques.

## How we built it

We built our project mainly through good communication. We split up tasks and trusted each other to uphold our ends of the project. We all decided to communicate with each other frequently to ensure we were on the same page and aware of the status of our projects.

## Challenges we ran into

* Putting the pieces together: because we didn't all have skills conducive to a full Python project, our group had to learn flask to accommodate our skills and work through the challenges we faced.
* Grain boundary detection: some images (especially from our own scraped datasets) were very hard to analyze. Getting around this required some fine tuning of our algorithms and a lot of time.

## Accomplishments that we're proud of

We're proud to have:

* Learned how to web scrape
* Practiced the materials skills we built up in engineering
* Worked together in a group of three but still have created an amazing project

## What we learned

* How to better communicate our status with our parts of the project to ensure mutual success
* To take it easy
* How to best solve issues when we're struggling with identical code bases (it's probably an environment problem)

## What's next for MicroScan

For Version 2.0, MicroScan will:

* directly integrate the scraper into its codebase
* have more advanced detection and analysis of microstructure images
\*Use better kernel technology for grain boundary detection
\*Develop image analysis techniques to better analyze heavily curtained data (given curtain information)