This week I began the work of integrating the server code that I had with everyone else’s code and making sure that there were no errors. The server code is a crucial component of our project and it is prone to generating hard to find errors as it uses python try-except statements which make debugging errors difficult as when there are errors in a try-except they are ignored so if something is going wrong inside of them the program keeps running without saying what happened.
I think we are on task to finish by demo day.
Next week I will be working on finalizing some svg parser and data collection for the board.
This week, I’ve mainly been working on finalizing features of the whiteboard. Mainly, there was a bug that I had to spend a lot of time debugging. It was related to the rotation and translate feature, as well as the group lines feature (the program would crash sometimes if I tried to group multiple lines at once, and then move them). I was able to fix out figure out what the issue was and resolve a few other bugs as well.
I also focused a lot on testing and making sure that there weren’t any other hidden bugs or edge cases that I might have missed. I’ve also been working with my team on the final poster and have started thinking about what to put on the video. I am on schedule so far and will continue testing and integrating my code with the rest of the team’s code, as well as working on the final video and preparing for the live demo.
One risk that we face is any issues we might run into while integrating our individual components together. Other than that, our components are complete, and we will continue testing to root out any issues that we might discover while testing. Another concern is any network issues that might arise from out sockets/server-related code during the live demo, but we will acquire a router from Professor Savvides to account for that issue.
We are on schedule. Our current schedule is the same as what was shown in the last team status report. We are mainly focusing on integrating and testing this week, and smoothing out any final issues that pop up during the process. We are also working on the poster and planning what to put in our final video.
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.
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.
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.
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.
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.