Denise’s Status Report for 4/30/2022

This week I worked on integrating the image cropping code with the rest of the codebase and starting implementing an SVG writer to output the objects on the screen into lines in SVG format, such that modifications can be sent over sockets quicker, parsed through by our SVG parser, and also exported as an SVG file if needed. After our final demo I also began looking into HSL(hue, saturation, lightness) for line detection as opposed to greyscale, since HSL would be more robust against lines of varying widths and within shadows.  Currently I am looking at an implementation similar to the one described here. 

Next week I will be working on finishing the final poster, the final report as well as the SVG writer. If there is still time available I will implement HSL line detection as well.

Currently we seem to be on schedule but there is quite a bit of integration to be done.

Lisa’s Status Report for April 23, 2022

This week, I was able to get the whiteboard working so that it could now take in the camera feed as input and vectorize it. It detects the lines using computer vision, which then gets passed into the vectorizer to produce the output that we see in the whiteboard. Originally, without the computer vision method, the vectorized image was showing up as several smaller lines (as I showed during the demo on Monday), but I fixed the issue using computer vision to detect the lines beforehand.

I also created a “Erase all” feature that erases the entire whiteboard, and a “group lines” feature. The “group lines” feature will group together all the lines that the user selects into one line.

The biggest accomplishment this week was getting both rotating and scaling to work. The video below shows how it works. I can’t upload a video but we will be showing a video of the feature during our presentation in the coming week. One issue that doesn’t have to do with functionality but more user usability is that you cant drag too fast, otherwise the GUI will not be able to update the line fast enough to keep up with the mouse clicks. I will try to modify this next week

Finally, I worked on the presentation slides for this week, mainly the vectorizing part of the solution approach, and providing an updated schedule.

Next week, in addition to working on the issue I mentioned earlier, I’ll also work on integrating my code with Denise and Ronald’s and work on some of the stretch goals. So far, we are on schedule.

Team Status Report for April 23, 2022

The most significant risks are not being able to get the SVG writer working because in order to integrate all of the vectorization and the communication we need to be able to write the components out in an SVG file to send to connected peers since SVG files send faster than JPEGs and PNGs. This method involves looping through all of components and writing out in the SVG format. We do not project this to be a very high risk since it’s a matter of parsing through information and writing out as a string in a particular format.

We did not change our design much but we did add additional steps that were unaccounted for in our original design including cropping the image to remove the background and adding features for moving points individually as well as grouping lines together.

Here is our current schedule.

Denise’s Status Report for April 23, 2022

This week I worked on finishing the image cropping feature such that the background is removed whenever we convert an image to a SVG, such that we will not capture the background objects within our diagram. In order to do so we find the biggest contour within the image and create a bounding box around it. After that we scale the bounding box down to remove the hand that’s holding the paper. Currently I’m working on creating a function to write the contents of the diagram back into an SVG file such that new modifications can be sent over the server. I have also worked on collecting results and updating the slides for the final presentation

Left: Original image; Right: Cropped image

Currently I am on schedule, and am picking up smaller tasks that were not originally planned.

Ronald’s Status Report for April 23, 2022

This week I was able to fix up some small items within the application like when a user mistypes the access code the program will give them an error message instead of just crashing. The send button only appears if there is a vector on the whiteboard and the receive button only appears if you have vectors in your inbox. I also worked on updating the inbox by having it show all of the vectors received and allowing you to select which one you want to add to your whiteboard instead of having it be a first in first out system.

Our team is on schedule to have this completed by may 5th as we just need to do some final integration of all the code that the 3 of us have been working on separately.

Next week I hope to begin on the integration and be able to have a fully integrated project that can do everything as for my version right now I can’t really modify the vectors.

Lisa’s Status Report for April 16, 2022

This week I continued to work on the display function that I had started to work on last week (it takes in a parsed SVG file and converts the information in each line of the file into editable elements on the whiteboard). The main setback that I had to work with this week was dealing with an unexpected variable in each line of the SVG file (labeled with “transform”, which indicates that the line needs to be transformed by a specific value in the x or y direction). I also had to deal with adjusting the values to fit within the proportions of the whiteboard using a ratio between the width and height noted in the SVG file and that of the whiteboard display in the GUI.

I was able to complete this, which completes the integration of the SVG parser with the whiteboard display function. In the coming week, I will test this more to make sure it completely works with all types of lines and multiple lines in the input image. Right now, it makes all lines of a certain width, but next week I’ll try to have the lines on the whiteboard match the relative widths of the lines in the drawing.

I’ll also keep working on adding the translation feature for the lines, and starting doing some research into how to scale the lines. So far, I am on schedule.

Team Status Report for April 16, 2022

The most significant risks are not being able to get the SVG parser completed in time since that’s going to be an important part of the project as we need to be able to translate and resize the parts on the screen. We’re working on that and are going to have two people working on that to make sure that we can get it done but we need to be able to get obtain the piece of paper from the picture first before it works.

We had a change that there was no longer a need to add a feature that allows users to specify which other users they’re sending the image to instead of just sending it to everyone at once. We decided to cut it since there was no elegant way to implement it with our current implementation of everything else. This wasn’t a very important part of our project though as it wasn’t even on the design report.

We are really close to being able to obtain the piece of paper from the image and from there we should be able to get the SVG parser working.

Denise’s Status Report for April 16

This week I worked on implementing a cropping feature to remove the background of the image captured by the camera such that we only vectorize the diagram. My approach was to greyscale the image, apply another filter to make the image black and white, and apply a morphological erosion and dilation to remove noise. After that we will apply the openCV border detection to find the largest contour, fill it, and then use that as a mask to isolate the image.

Currently our approach works however the mask generated is a little too sensitive to the lighting and the hand holding up the paper as shown in the images below. This is likely because we’re using a binary filter to convert the image to black and white that results in very jagged contours. We hope to remedy this by fitting a bounding box around the contour and then filling the bounding box instead of the contour to generate our mask. This is still currently a work in progress.

Left: Original photo;    Right: generated mask

     

I am a little behind schedule but I should be able to wrap this up and get back on track next week. I hope to finish the image cropping and then will help Lisa out with the SVG transformations, and new SVG file generation.

Ronald’s Status Report for April 16, 2022

This week I attempted working on having the interface allow for users to send vectors to specific people in the room instead of always sending the vector to everyone and having it so that when you receive a vector you can see what it is first before accepting it. We decided against being able to send to specific users as there was no elegant way of implementing it other than having the user type out the names of everyone he did want to send it to but that was too prone to user error.

I think that we are still on schedule.

Next week i hope to clean up the interface and make it easier for a first time user to be able to use as right now if any step of the process is done wrong the application will just crash, i.e. if you type in the wrong access code and hit join it won’t say wrong access code the app will just crash. And other things similar to that.

Ronald’s Status Report for April 9, 2022

This week I was able to complete having users send actual vectors to each other and having them be displayed on each other’s screens when they arrive. I thought this would be a simple task but there were a lot of issues with encoding the messages correctly so that the server could handle sending them and there were also issues with file size so I had to compress the vectors as well before sending them.

Our schedule had to be changed slightly but I think that we are all still on track to complete this on time.

This week I hope to add a function that allows users to send the vectors to only certain users instead of always sending it to everyone. And also I hope to add a function where the user can see the image that they receive before they put it onto their whiteboard as currently the once received the vector gets placed onto the whiteboard immediately.