Overall, Drawyer performed decently well! It was able to successfully filter out the background of an input image (1) to one with just an outline of user's face/body (2). Unfortunately, Drawyer had missed all the facial features in this trial (but had them in other trials) so we may need to work on the image processing and possibly implement facial recognition to get a more accurate outline of just a person's face with important features like the nose, mouth, eyes, etc.
However, Drawyer drew the outlined image almost perfectly: Sawyer's rendition (3) is virtually the same as the processed image (2)!
(1) Raw Input Image
(2) Processed Image
(3) Sawyer's Drawing
Drawyer did an excellent job meeting its original goals: it first took in camera input involving a person with some background, distinguished the face and its key features in the image, and converted it to a simple outlined image which Sawyer was able to accurately draw on paper. It met all of our basic design criteria.
As mentioned earlier, it did have some setbacks, such as not precisely retaining the face for different input images. This was because Canny edge detection on its own does not remove all unwanted noise from the image. We attempted using different filters (Bilateral, Gaussian), but found the best general results with median filtering. Each image needs to have noise/threshold parameters manually tuned, which is why we added the option for the user to change these parameters to their liking.
Additionally, we had some difficulty with the trajectory planning: we started by trying to use controls and planning a path using only the final pose with orientation constraints. However, Sawyer could not take the shortest path between points with a reasonable trajectory. Thus, we switched to using inverse kinematics using a simple IK solver which would give us the easiest path, which worked reasonably well.