{"id":79,"date":"2024-02-24T21:34:48","date_gmt":"2024-02-24T21:34:48","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/?p=79"},"modified":"2024-02-24T21:34:48","modified_gmt":"2024-02-24T21:34:48","slug":"michaels-status-report-2-24-2024","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/2024\/02\/24\/michaels-status-report-2-24-2024\/","title":{"rendered":"Michael&#8217;s Status Report 2\/24\/2024"},"content":{"rendered":"<p><b>What did you personally accomplish this week on the project?\u00a0<\/b><\/p>\n<p><span style=\"font-weight: 400\">For this week, we have the proof of concept JPEG encoder and decoder written and tested end to end. The current code is able to take in an array of RGB values and then compress them using methods inspired by the JPEG specification. The decoder is also there to aid in Varun when he implements the JPEG decoder on the FPGA. The current code is able to achieve a compression ratio of about 5.75:1 which is in line with our design assumptions.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">It is possible to improve this further by truncating the lower bits of Cr and Cb values so that only the most significant 4 bits of each channel are left. With this implemented the compression ratio rises to only slightly above 6:1. My hypothesis is that the bit packing of Cr and Cb is significantly increasing the entropy compared to just encoding Cr and Cb separately. Therefore even though we save encoding an entire channel, the rise in entropy wipes out most of the gains. Since the human eye is only very sensitive to the luminance encoded in the Y channel, the loss of the lower bits shouldn\u2019t significantly degrade the quality issue.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The only big advantage of this bit packing is the run time. The one where the Cr and Cb values are truncated is almost 25% faster than the regular version. Therefore, I have saved a copy of the code in case we need a little bit more performance and are willing to sacrifice some quality<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">On the toolchain setup front, I was also able to verify my toolchain installation by flashing one of the hello world examples on the boards that arrive earlier in the week and verifying its output if what is expected.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_82\" aria-describedby=\"caption-attachment-82\" style=\"width: 300px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-82 size-medium\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-content\/uploads\/sites\/281\/2024\/02\/download-300x225.jpeg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-content\/uploads\/sites\/281\/2024\/02\/download-300x225.jpeg 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-content\/uploads\/sites\/281\/2024\/02\/download.jpeg 320w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-82\" class=\"wp-caption-text\">Image Before Compression<\/figcaption><\/figure>\n<figure id=\"attachment_80\" aria-describedby=\"caption-attachment-80\" style=\"width: 300px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-80 size-medium\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-content\/uploads\/sites\/281\/2024\/02\/regular-300x208.png\" alt=\"\" width=\"300\" height=\"208\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-content\/uploads\/sites\/281\/2024\/02\/regular-300x208.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-content\/uploads\/sites\/281\/2024\/02\/regular.png 640w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-80\" class=\"wp-caption-text\">Image After Compression<\/figcaption><\/figure>\n<figure id=\"attachment_81\" aria-describedby=\"caption-attachment-81\" style=\"width: 300px\" class=\"wp-caption alignnone\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-81 size-medium\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-content\/uploads\/sites\/281\/2024\/02\/844-300x208.png\" alt=\"\" width=\"300\" height=\"208\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-content\/uploads\/sites\/281\/2024\/02\/844-300x208.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-content\/uploads\/sites\/281\/2024\/02\/844.png 640w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-81\" class=\"wp-caption-text\">Image Compressed Using Packed Cr &amp; Cb<\/figcaption><\/figure>\n<p><b>Is your progress on schedule or behind? If you are behind, what actions will be\u00a0<\/b><b>taken to catch up to the project schedule?<\/b><\/p>\n<p><span style=\"font-weight: 400\">Currently on\u00a0 schedule, the JPEG encoder and decoder didn&#8217;t present too many bugs in the process of writing it<\/span><\/p>\n<p><b>What deliverables do you hope to complete in the next week?<\/b><\/p>\n<p><span style=\"font-weight: 400\">For next week, I hope to run the JPEG encoder and decoder across a more rigorous set of test images to verify its functionality. Assuming all goes well, I plan to also start porting the JPEG encoder code on the ESP32 in anticipation of integration with the camera driver.\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What did you personally accomplish this week on the project?\u00a0 For this week, we have the proof of concept JPEG encoder and decoder written and tested end to end. The current code is able to take in an array of RGB values and then compress them using methods inspired by the JPEG specification. The decoder &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/2024\/02\/24\/michaels-status-report-2-24-2024\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Michael&#8217;s Status Report 2\/24\/2024&#8221;<\/span><\/a><\/p>\n","protected":false},"author":829,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/posts\/79"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/users\/829"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/comments?post=79"}],"version-history":[{"count":1,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/posts\/79\/revisions"}],"predecessor-version":[{"id":83,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/posts\/79\/revisions\/83"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/media?parent=79"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/categories?post=79"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s24-teamb6\/wp-json\/wp\/v2\/tags?post=79"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}