Week 10 Update

This week, we were away for Thanksgiving and did not get much done on our project. We had planned to leave this week for break, so this does not put us behind schedule.

Our ToDo list for the next two weeks is pretty intense, and we have plans to make everything happen. Our first priority is making sure the camera decoding setup works on the second Raspberry Pi, and as such, we are hoping to get the stand for the Pi camera printed and complete early this week. After that, we will be working through the decoding setup.

Encoding/Decoding:

  • Get the pattern decoded in a way that’s easy to process w/ CSV
  • Cipher

Decoding Setup:

  • Set up the camera at certain height that doesn’t change & adjust focus perfectly
  • Set up on loop to send to CV
  • Have image in certain position
  • Play around with camera
  • Which side is up?
  • Color recognition

Encoding Setup:

  • Make it not slow

Camera situation:

  • Test CV on raspberry pi
  • Have the encoding rig for the camera made/cut ASAP
  • Have it set up on loop

Week 9 Update

Summary

This week, we tested the Pi Camera with the encoded message, and found that the Pi Camera will be high res enough, and we just need to get it to focus. We also found several “to do” items regarding improving our decoding pipeline.  We also worked on finishing the decoder, integrating the CV with the decoding algorithm.

Decoder – Snigdha & Shivani

This week we worked on finishing the decoder. We worked closely to tweak the CV and encoding pattern bit by bit in order to make sure that the shapes were being properly detected. From there, Snigdha worked on updating the decoder to work with the modified csv format and make sure that it was able to accurately decode the message. Snigdha also worked on modifying the encoding pattern to make it a better fit for the 4×6 paper when printed.

Pi Camera Tests – Shivani & Caroline

This week, we ran some tests on the Raspberry Pi camera setup together, with Shivani testing the recognition ability with the OpenCV, and Caroline controlling the camera and printer.

Findings

  • Pi camera is perfectly high res enough
  • Can easily see all 32 characters as small as we have them currently
  • Can fit it all onto the card size that we wanted

 

To Do

  • Camera saves large image sizes, need to resize and crop and do slight image processing
  • Figure out ordering and alignment
  • Determine exact distances and measurements for photos
  • Make prototype setup for photo taking so we can start using it for decoding
  • Ending line to determine which side is up
  • Last row of characters gets slightly cut off for some reason
  • Test color recognition and find range
Original Image from Rpi camera
Image after processing (cropping, increasing brightness, slight rotation)
Image with pattern detection

Week 5 Update

This week’s main goals were to integrate image scanning with OpenCV, to work on our decoding algorithm, and to get the Raspberry Pi encoding system working. Shivani and Snigdha worked together to get the CV to output data that could easily be processed by the decoding algorithm, which we also developed this week.

Caroline

This week, I set up the first Raspberry Pi with WiFi, git, and javascript libraries. I also installed CUPS to get the Raspberry Pi to work with the HP printer we got, but did not realize that I needed to order a printer cable, so now we are waiting on that. I also got I2C communication working with the LCD screen, and I have the pi running our image encoding system, as well as a button for input. For next week, my goal is to get the system running end-to-end with the button, the screen, the keyboard, and the printer.

Snigdha

This week, I worked on adding randomization and encryption to our encoding algorithm. I did this by varying the selected shapes for a character such that a pattern that requires a 4 edged shape could randomly pick between squares, rectangles, and diamonds, for example. I also added an encryption algorithm that relies on mapping the alphabet to a qwerty pattern to shuffle around the letters of the message. I also spent time this week writing a decoder that took in the results from the CV detection in a CSV format, and processed them to determine the input message. This requires a bit more integration testing with the CV but works with manual unit tests. I also discussed a couple alternative encoding ideas with Shivani regarding encoding the data in an existing image that was not a direct 1-to-1 mapping, taking advantage of the existing attributes in various images. This idea is something that we will look into a bit more after preparing for the midpoint demo.

Shivani

Introduction and Project Summary

We plan to create a secret messaging system that employs a visually pleasing way to deliver encoded text based messages. Our system will take an initial message, and print out an encoded image. When the recipient scans the image, they will get back the original message.

The first part of our system will involve developing and printing out the encoded message. The message will use colors, shapes, and patterns to encode information about which letters are being sent in what order. When the encoded message is scanned with our app, the app will find the different shapes and colors and decode them back into the original message.

This is a cool project because there already exist codes like QR codes and barcodes that encode data in the real world, but they’re ugly and they obviously look like they are encoding something. Our goal is to create something innocuous-looking, that you wouldn’t immediately know contains a hidden message.

 

Week 1 Progress Report (9/17)

Week 1 Update

Summary

This week, we all worked together getting our ideas together and planning out our project moving forward. We had several sessions sitting down with our project proposal, thinking through what we had to do, and creating our initial presentation detailing our idea. We also presented our work, which gave us the opportunity to share our idea with the rest of the class and get valuable feedback.

Shivani

This week, I worked on getting OpenCV installed and working on my laptop. I started playing around with the software and researching what other users have been able to complete in the past to determine the feasibility of our project.  After that, I found some source code for color detection and modified that for our project. Currently, we are able to detect and distinguish a few shades of blue, red and green using OpenCV and Python. I will be modifying this next week and making it sensitive to a larger color range and different shades of the colors. Additionally, if I have time I can try refining it for different types of lighting conditions.

Snigdha

This week, I got started on looking at simple encoding algorithms and ways to optimize our method. Specifically, I looked at the key factors that we would manipulate to distinguish characters and how that would look like in an image. I used Python’s Tkinter to generate a few of these patterns for testing purposes and will be continuing to refine the encoding and pattern generation with Shivani and Caroline over the next few weeks.

Caroline

This week, I mostly worked with Shivani and Snigdha to solidify our ideas. I also looked into possibilities for what our encoding algorithm could look like, including exploring Processing as a tool for generating patterns. I created some sample images using Sketch design software that explore what our pattern could look like, and began experimenting to see how we could generate the patterns computationally. We also ordered some hardware to begin experimenting with.

Next week, I plan to get started on setting up the Raspberry Pi, as well as continuing to explore generating the visual patterns.

 

Overall Thoughts

Our biggest priority in the coming week should be to continue working with OpenCV to recognize shapes and patterns. We hope to have some rudimentary shape, color, and pattern recognition working as soon as possible, so that we can begin to increase the complexity of our pattern. While this is happening, we will work to generate rules that correspond with text encoding.

 


from prompt:

Each team member should be answering the following questions:

  • What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).
  • Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?
  • What deliverables do you hope to complete in the next week?

Answered by the whole group:

  • What are the most significant risks that could jeopardize the success of the project? How are these risks being managed? What contingency plans are ready?
  • Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?
  • Provide an updated schedule if changes have occurred.