{"id":94,"date":"2023-10-08T00:38:35","date_gmt":"2023-10-08T00:38:35","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/?p=94"},"modified":"2023-10-08T00:40:07","modified_gmt":"2023-10-08T00:40:07","slug":"stephen-dais-status-report-for-10-7-23","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/2023\/10\/08\/stephen-dais-status-report-for-10-7-23\/","title":{"rendered":"Stephen Dai&#8217;s Status Report For 10\/7\/23"},"content":{"rendered":"<p>This week I spent much time and made good progress on the computer vision portion of our project! Originally in our schedule, I am to first do the individual component detection, but this week I opted to complete the full circuit detection in which I parse the original input image to generate the sub images for each component. I opted to do this because this will make it easier for me to test the individual circuit detection because I can upload drawings of full circuits instead of having to take individual photos of components. Also, by doing this I generate photos of the components that are more appropriately sized.<\/p>\n<p>Here is the sub-image generation in action:<\/p>\n<p>First the original image is greyscaled:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-98\" style=\"font-size: 1rem\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/original_circuit-300x151.png\" alt=\"\" width=\"199\" height=\"100\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/original_circuit-300x151.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/original_circuit-768x387.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/original_circuit-1024x515.png 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/original_circuit.png 1524w\" sizes=\"(max-width: 199px) 100vw, 199px\" \/><\/p>\n<p>Then do some thresholding:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-99\" style=\"font-size: 1rem\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/thresholded_circuit-300x162.png\" alt=\"\" width=\"220\" height=\"119\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/thresholded_circuit-300x162.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/thresholded_circuit-768x415.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/thresholded_circuit-1024x554.png 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/thresholded_circuit.png 1500w\" sizes=\"(max-width: 220px) 100vw, 220px\" \/><\/p>\n<p>Then apply a median blur (see how just the nodes are left!):<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-95\" style=\"font-size: 1rem\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/blurred_circuit-300x143.png\" alt=\"\" width=\"227\" height=\"108\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/blurred_circuit-300x143.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/blurred_circuit-768x367.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/blurred_circuit-1024x489.png 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/blurred_circuit.png 1476w\" sizes=\"(max-width: 227px) 100vw, 227px\" \/><span style=\"font-size: 1rem\">\u00a0<\/span><\/p>\n<p>Then use Hough Circle transform to find all the nodes (circles in white):<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-97\" style=\"font-size: 1rem\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/nodes_detected-300x153.png\" alt=\"\" width=\"229\" height=\"117\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/nodes_detected-300x153.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/nodes_detected-768x391.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/nodes_detected-1024x521.png 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/nodes_detected.png 1495w\" sizes=\"(max-width: 229px) 100vw, 229px\" \/><\/p>\n<p>Then (skipping some steps here) generate individual component images by calculating bounding boxes for each edge (connection between nodes):<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-96\" style=\"font-size: 1rem\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/detected_components-300x92.png\" alt=\"\" width=\"300\" height=\"92\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/detected_components-300x92.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/detected_components-768x235.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/detected_components-1024x314.png 1024w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-content\/uploads\/sites\/261\/2023\/10\/detected_components.png 1648w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <span style=\"font-size: 1rem\">\u00a0<\/span><span style=\"font-size: 1rem\">\u00a0<\/span><\/p>\n<p>I also implemented the brute force feature matching to figure out the best matched component given an input image and a dataset of images. It actually worked better than I expected, successfully classifying 3\/3 sub images, but obviously I need to do more testing. There is definitely a lot of stuff I want to tune still, and I want to try adding some blurring and more image preprocessing to see if the results are more definitive.<\/p>\n<p>I am definitely on schedule. I purposely worked a lot this week because next week I have several midterms that will eat up my time, as well as the design report.<\/p>\n<p>My next steps are to integrate the sub image generation and component detection so that I can work on the full-circuit re-creation and netlist generation. After this infrastructure is completed, I will start to fine tune parameters and whatnot in each step of the process.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week I spent much time and made good progress on the computer vision portion of our project! Originally in our schedule, I am to first do the individual component detection, but this week I opted to complete the full circuit detection in which I parse the original input image to generate the sub images &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/2023\/10\/08\/stephen-dais-status-report-for-10-7-23\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Stephen Dai&#8217;s Status Report For 10\/7\/23&#8221;<\/span><\/a><\/p>\n","protected":false},"author":788,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[8],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/posts\/94"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/users\/788"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/comments?post=94"}],"version-history":[{"count":3,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/posts\/94\/revisions"}],"predecessor-version":[{"id":102,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/posts\/94\/revisions\/102"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/media?parent=94"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/categories?post=94"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f23-teamb1\/wp-json\/wp\/v2\/tags?post=94"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}