diff --git a/Gemfile.lock b/Gemfile.lock index 2b0b9cb5..a75820b1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,16 +1,17 @@ GEM remote: https://rubygems.org/ specs: - activesupport (7.1.3.4) + activesupport (7.2.0) base64 bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) base64 (0.2.0) @@ -27,7 +28,7 @@ GEM fast-stemmer (~> 1.0) matrix (~> 0.4) colorator (1.1.0) - concurrent-ruby (1.3.3) + concurrent-ruby (1.3.4) connection_pool (2.4.1) crass (1.0.6) csl (1.6.0) @@ -51,23 +52,11 @@ GEM loofah (>= 2.3.1, < 3) sax-machine (>= 1.0, < 2) ffi (1.17.0-aarch64-linux-gnu) - ffi (1.17.0-arm64-darwin) - ffi (1.17.0-x86_64-darwin) - ffi (1.17.0-x86_64-linux-gnu) forwardable-extended (2.6.0) gemoji (4.1.0) google-protobuf (4.27.3-aarch64-linux) bigdecimal rake (>= 13) - google-protobuf (4.27.3-arm64-darwin) - bigdecimal - rake (>= 13) - google-protobuf (4.27.3-x86_64-darwin) - bigdecimal - rake (>= 13) - google-protobuf (4.27.3-x86_64-linux) - bigdecimal - rake (>= 13) html-pipeline (2.14.3) activesupport (>= 2) nokogiri (>= 1.4) @@ -147,13 +136,11 @@ GEM kramdown (~> 2.0) latex-decode (0.4.0) libv8-node (22.5.1.0-aarch64-linux) - libv8-node (22.5.1.0-arm64-darwin) - libv8-node (22.5.1.0-x86_64-darwin) - libv8-node (22.5.1.0-x86_64-linux) liquid (4.0.4) listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) + logger (1.6.1) loofah (2.22.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) @@ -162,20 +149,13 @@ GEM mini_mime (1.1.5) mini_racer (0.13.0) libv8-node (~> 22.5.1.0) - minitest (5.24.1) + minitest (5.25.1) multi_xml (0.7.1) bigdecimal (~> 3.1) - mutex_m (0.2.0) namae (1.2.0) racc (~> 1.7) nokogiri (1.16.7-aarch64-linux) racc (~> 1.4) - nokogiri (1.16.7-arm64-darwin) - racc (~> 1.4) - nokogiri (1.16.7-x86_64-darwin) - racc (~> 1.4) - nokogiri (1.16.7-x86_64-linux) - racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (6.0.1) @@ -190,13 +170,8 @@ GEM safe_yaml (1.0.5) sass-embedded (1.77.8-aarch64-linux-gnu) google-protobuf (~> 4.26) - sass-embedded (1.77.8-arm64-darwin) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86_64-darwin) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86_64-linux-gnu) - google-protobuf (~> 4.26) sax-machine (1.3.2) + securerandom (0.3.1) strscan (3.1.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -209,10 +184,7 @@ GEM webrick (1.8.1) PLATFORMS - aarch64-linux - arm64-darwin - x86_64-darwin - x86_64-linux + aarch64-linux-gnu DEPENDENCIES classifier-reborn @@ -241,4 +213,4 @@ DEPENDENCIES webrick BUNDLED WITH - 2.5.7 + 2.5.17 diff --git a/_config.yml b/_config.yml index 18f15eeb..c07177d1 100644 --- a/_config.yml +++ b/_config.yml @@ -2,20 +2,17 @@ # Site settings # ----------------------------------------------------------------------------- -title: blank # the website title (if blank, full name will be used instead) -first_name: You -middle_name: R. -last_name: Name -email: you@example.com +title: Naman Satish # the website title (if blank, full name will be used instead) +first_name: Naman +middle_name: Shimoga +last_name: Satish +email: naman@berkeley.com description: > # the ">" symbol means to ignore newlines until "footer_text:" - A simple, whitespace theme for academics. Based on [*folio](https://github.com/bogoli/-folio) design. -footer_text: > - Powered by Jekyll with al-folio theme. - Hosted by GitHub Pages. - Photos from Unsplash. + Based on [*folio](https://github.com/bogoli/-folio) design. +footer_text: keywords: jekyll, jekyll-theme, academic-website, portfolio-website # add your own keywords or leave empty lang: en # the language of your site (for example: en, fr, cn, ru, etc.) -icon: ⚛️ # the emoji used as the favicon (alternatively, provide image name in /assets/img/) +icon: 🌐 # the emoji used as the favicon (alternatively, provide image name in /assets/img/) url: https://satish.dev # the base hostname & protocol for your site baseurl: # the subpath of your site, e.g. /blog/. Leave blank for root @@ -41,7 +38,7 @@ repo_trophies: # will use title and url fields # Take a look to https://github.com/jekyll/jekyll-feed for more customization -rss_icon: true +rss_icon: false # ----------------------------------------------------------------------------- # Layout @@ -51,7 +48,7 @@ navbar_fixed: true footer_fixed: true search_enabled: true socials_in_search: true -bib_search: true +bib_search: false # Dimensions max_width: 930px @@ -133,8 +130,8 @@ bing_site_verification: # out your bing-site-verification ID (Bing Webmaster) # Blog # ----------------------------------------------------------------------------- -blog_name: al-folio # blog_name will be displayed in your blog page -blog_description: a simple whitespace theme for academics +blog_name: Naman's Blog # blog_name will be displayed in your blog page +blog_description: some things i'm working on permalink: /blog/:year/:title/ lsi: false # produce an index for related posts @@ -169,12 +166,12 @@ disqus_shortname: al-folio # put your disqus shortname # If you have blog posts published on medium.com or other external sources, # you can display them in your blog by adding a link to the RSS feed. external_sources: - - name: medium.com - rss_url: https://medium.com/@al-folio/feed - - name: Google Blog - posts: - - url: https://blog.google/technology/ai/google-gemini-update-flash-ai-assistant-io-2024/ - published_date: 2024-05-14 + #- name: medium.com + # rss_url: https://medium.com/@al-folio/feed + #- name: Google Blog + # posts: + # - url: https://blog.google/technology/ai/google-gemini-update-flash-ai-assistant-io-2024/ + # published_date: 2024-05-14 # ----------------------------------------------------------------------------- # Newsletter @@ -243,7 +240,7 @@ exclude: - lighthouse_results/ - package.json - package-lock.json - - _pages/about_einstein.md + - _pages/about_naman.md - purgecss.config.js - README.md - readme_preview/ diff --git a/_data/cv.yml b/_data/cv.yml index 5885b30b..0840bc2c 100644 --- a/_data/cv.yml +++ b/_data/cv.yml @@ -2,7 +2,7 @@ type: map contents: - name: Full Name - value: Albert Einstein + value: Naman Satish - name: Date of Birth value: 14th March 1879 - name: Languages diff --git a/_posts/2015-03-15-formatting-and-links.md b/_drafts/2015-03-15-formatting-and-links.md similarity index 100% rename from _posts/2015-03-15-formatting-and-links.md rename to _drafts/2015-03-15-formatting-and-links.md diff --git a/_posts/2015-05-15-images.md b/_drafts/2015-05-15-images.md similarity index 100% rename from _posts/2015-05-15-images.md rename to _drafts/2015-05-15-images.md diff --git a/_posts/2015-07-15-code.md b/_drafts/2015-07-15-code.md similarity index 100% rename from _posts/2015-07-15-code.md rename to _drafts/2015-07-15-code.md diff --git a/_posts/2015-10-20-disqus-comments.md b/_drafts/2015-10-20-disqus-comments.md similarity index 100% rename from _posts/2015-10-20-disqus-comments.md rename to _drafts/2015-10-20-disqus-comments.md diff --git a/_posts/2015-10-20-math.md b/_drafts/2015-10-20-math.md similarity index 100% rename from _posts/2015-10-20-math.md rename to _drafts/2015-10-20-math.md diff --git a/_posts/2018-12-22-distill.md b/_drafts/2018-12-22-distill.md similarity index 100% rename from _posts/2018-12-22-distill.md rename to _drafts/2018-12-22-distill.md diff --git a/_posts/2020-09-28-twitter.md b/_drafts/2020-09-28-twitter.md similarity index 100% rename from _posts/2020-09-28-twitter.md rename to _drafts/2020-09-28-twitter.md diff --git a/_posts/2021-07-04-diagrams.md b/_drafts/2021-07-04-diagrams.md similarity index 100% rename from _posts/2021-07-04-diagrams.md rename to _drafts/2021-07-04-diagrams.md diff --git a/_posts/2022-02-01-redirect.md b/_drafts/2022-02-01-redirect.md similarity index 100% rename from _posts/2022-02-01-redirect.md rename to _drafts/2022-02-01-redirect.md diff --git a/_posts/2022-12-10-giscus-comments.md b/_drafts/2022-12-10-giscus-comments.md similarity index 100% rename from _posts/2022-12-10-giscus-comments.md rename to _drafts/2022-12-10-giscus-comments.md diff --git a/_posts/2023-03-20-table-of-contents.md b/_drafts/2023-03-20-table-of-contents.md similarity index 100% rename from _posts/2023-03-20-table-of-contents.md rename to _drafts/2023-03-20-table-of-contents.md diff --git a/_posts/2023-03-21-tables.md b/_drafts/2023-03-21-tables.md similarity index 100% rename from _posts/2023-03-21-tables.md rename to _drafts/2023-03-21-tables.md diff --git a/_posts/2023-04-24-videos.md b/_drafts/2023-04-24-videos.md similarity index 100% rename from _posts/2023-04-24-videos.md rename to _drafts/2023-04-24-videos.md diff --git a/_posts/2023-04-25-audios.md b/_drafts/2023-04-25-audios.md similarity index 100% rename from _posts/2023-04-25-audios.md rename to _drafts/2023-04-25-audios.md diff --git a/_posts/2023-04-25-sidebar-table-of-contents.md b/_drafts/2023-04-25-sidebar-table-of-contents.md similarity index 100% rename from _posts/2023-04-25-sidebar-table-of-contents.md rename to _drafts/2023-04-25-sidebar-table-of-contents.md diff --git a/_posts/2023-05-12-custom-blockquotes.md b/_drafts/2023-05-12-custom-blockquotes.md similarity index 100% rename from _posts/2023-05-12-custom-blockquotes.md rename to _drafts/2023-05-12-custom-blockquotes.md diff --git a/_posts/2023-07-04-jupyter-notebook.md b/_drafts/2023-07-04-jupyter-notebook.md similarity index 100% rename from _posts/2023-07-04-jupyter-notebook.md rename to _drafts/2023-07-04-jupyter-notebook.md diff --git a/_posts/2023-07-12-post-bibliography.md b/_drafts/2023-07-12-post-bibliography.md similarity index 100% rename from _posts/2023-07-12-post-bibliography.md rename to _drafts/2023-07-12-post-bibliography.md diff --git a/_posts/2023-12-12-tikzjax.md b/_drafts/2023-12-12-tikzjax.md similarity index 100% rename from _posts/2023-12-12-tikzjax.md rename to _drafts/2023-12-12-tikzjax.md diff --git a/_posts/2024-01-26-chartjs.md b/_drafts/2024-01-26-chartjs.md similarity index 100% rename from _posts/2024-01-26-chartjs.md rename to _drafts/2024-01-26-chartjs.md diff --git a/_posts/2024-01-26-echarts.md b/_drafts/2024-01-26-echarts.md similarity index 100% rename from _posts/2024-01-26-echarts.md rename to _drafts/2024-01-26-echarts.md diff --git a/_posts/2024-01-26-geojson-map.md b/_drafts/2024-01-26-geojson-map.md similarity index 100% rename from _posts/2024-01-26-geojson-map.md rename to _drafts/2024-01-26-geojson-map.md diff --git a/_posts/2024-01-27-advanced-images.md b/_drafts/2024-01-27-advanced-images.md similarity index 100% rename from _posts/2024-01-27-advanced-images.md rename to _drafts/2024-01-27-advanced-images.md diff --git a/_posts/2024-01-27-code-diff.md b/_drafts/2024-01-27-code-diff.md similarity index 100% rename from _posts/2024-01-27-code-diff.md rename to _drafts/2024-01-27-code-diff.md diff --git a/_posts/2024-01-27-vega-lite.md b/_drafts/2024-01-27-vega-lite.md similarity index 100% rename from _posts/2024-01-27-vega-lite.md rename to _drafts/2024-01-27-vega-lite.md diff --git a/_posts/2024-04-15-pseudocode.md b/_drafts/2024-04-15-pseudocode.md similarity index 100% rename from _posts/2024-04-15-pseudocode.md rename to _drafts/2024-04-15-pseudocode.md diff --git a/_posts/2024-04-28-post-citation.md b/_drafts/2024-04-28-post-citation.md similarity index 100% rename from _posts/2024-04-28-post-citation.md rename to _drafts/2024-04-28-post-citation.md diff --git a/_posts/2024-04-29-typograms.md b/_drafts/2024-04-29-typograms.md similarity index 100% rename from _posts/2024-04-29-typograms.md rename to _drafts/2024-04-29-typograms.md diff --git a/_posts/2024-05-01-tabs.md b/_drafts/2024-05-01-tabs.md similarity index 100% rename from _posts/2024-05-01-tabs.md rename to _drafts/2024-05-01-tabs.md diff --git a/_pages/about.md b/_pages/about.md index 13d96870..724c185f 100644 --- a/_pages/about.md +++ b/_pages/about.md @@ -2,24 +2,21 @@ layout: about title: about permalink: / -subtitle: Affiliations. Address. Contacts. Motto. Etc. +subtitle: Student at the University of California, Berkeley. profile: align: right image: prof_pic.jpg image_circular: false # crops the image to make it circular - more_info: > -

555 your office number

-

123 your address street

-

Your City, State 12345

+ more_info: -news: true # includes a list of news items -selected_papers: true # includes a list of papers marked as "selected={true}" -social: true # includes social icons at the bottom of the page +news: false # includes a list of news items +selected_papers: false # includes a list of papers marked as "selected={true}" +social: false # includes social icons at the bottom of the page --- -Write your biography here. Tell the world about yourself. Link to your favorite [subreddit](http://reddit.com). You can put a picture in, too. The code is already in, just name your picture `prof_pic.jpg` and put it in the `img/` folder. +Hello, my name is Naman Satish. I am a student at the University of California, Berkeley. I am currently pursuing a Bachelor's degree in Electrical Engineering and Computer Sciences. -Put your address / P.O. box / other info right below your picture. You can also disable any of these elements by editing `profile` property of the YAML header of your `_pages/about.md`. Edit `_bibliography/papers.bib` and Jekyll will render your [publications page](/al-folio/publications/) automatically. +I am interested in the intersection of computer science and biology, and I am currently working on a project that involves using machine learning to predict the change in brain volume of patients with Multiple Sclerosis. -Link to your social media connections, too. This theme is set up to use [Font Awesome icons](https://fontawesome.com/) and [Academicons](https://jpswalsh.github.io/academicons/), like the ones below. Add your Facebook, Twitter, LinkedIn, Google Scholar, or just disable all of them. +My passions include photography, specifically computational photography. Whether it is stacking, or mergin, I enjoy experimenting with different techniques and software to create unique images from my travels. diff --git a/_pages/about_einstein.md b/_pages/about_einstein.md deleted file mode 100644 index 7914a2fc..00000000 --- a/_pages/about_einstein.md +++ /dev/null @@ -1,5 +0,0 @@ -Write your biography here. Tell the world about yourself. Link to your favorite [subreddit](http://reddit.com). You can put a picture in, too. The code is already in, just name your picture `prof_pic.jpg` and put it in the `img/` folder. - -Put your address / P.O. box / other info right below your picture. You can also disable any these elements by editing `profile` property of the YAML header of your `_pages/about.md`. Edit `_bibliography/papers.bib` and Jekyll will render your [publications page](/al-folio/publications/) automatically. - -Link to your social media connections, too. This theme is set up to use [Font Awesome icons](https://fontawesome.com/) and [Academicons](https://jpswalsh.github.io/academicons/), like the ones below. Add your Facebook, Twitter, LinkedIn, Google Scholar, or just disable all of them. diff --git a/_pages/about_naman.md b/_pages/about_naman.md new file mode 100644 index 00000000..afebfec1 --- /dev/null +++ b/_pages/about_naman.md @@ -0,0 +1,3 @@ +Hello, my name is Naman Satish. I am a student at the University of California, Berkeley. I am currently pursuing a Bachelor's degree in Electrical Engineering and Computer Sciences. + +I am interested in the intersection of computer science and biology, and I am currently working on a project that involves using machine learning to predict the change in brain volume of patients with Multiple Sclerosis. diff --git a/_pages/cv.md b/_pages/cv.md index ad3e26dd..acaaca93 100644 --- a/_pages/cv.md +++ b/_pages/cv.md @@ -4,8 +4,8 @@ permalink: /cv/ title: cv nav: true nav_order: 5 -cv_pdf: example_pdf.pdf -description: This is a description of the page. You can modify it in '_pages/cv.md'. You can also change or remove the top pdf download button. +cv_pdf: Naman_Satish_Resume.pdf +description: "Naman Satish's CV" toc: sidebar: left --- diff --git a/_pages/dropdown.md b/_pages/dropdown.md index aa32f221..d32d01b8 100644 --- a/_pages/dropdown.md +++ b/_pages/dropdown.md @@ -1,7 +1,7 @@ --- layout: page title: submenus -nav: true +nav: false nav_order: 8 dropdown: true children: diff --git a/_pages/profiles.md b/_pages/profiles.md index d7ca0450..5dde6e24 100644 --- a/_pages/profiles.md +++ b/_pages/profiles.md @@ -3,7 +3,7 @@ layout: profiles permalink: /people/ title: people description: members of the lab or group -nav: true +nav: false nav_order: 7 profiles: @@ -11,7 +11,7 @@ profiles: # and create one content file for each profile inside _pages/ - align: right image: prof_pic.jpg - content: about_einstein.md + content: image_circular: false # crops the image to make it circular more_info: >

555 your office number

@@ -19,7 +19,7 @@ profiles:

Your City, State 12345

- align: left image: prof_pic.jpg - content: about_einstein.md + content: image_circular: false # crops the image to make it circular more_info: >

555 your office number

diff --git a/_pages/projects.md b/_pages/projects.md index e19d6555..9c983461 100644 --- a/_pages/projects.md +++ b/_pages/projects.md @@ -5,7 +5,7 @@ permalink: /projects/ description: A growing collection of your cool projects. nav: true nav_order: 3 -display_categories: [work, fun] +display_categories: [school] horizontal: false --- diff --git a/_pages/publications.md b/_pages/publications.md index 48027f80..ab2a017e 100644 --- a/_pages/publications.md +++ b/_pages/publications.md @@ -3,7 +3,7 @@ layout: page permalink: /publications/ title: publications description: publications by categories in reversed chronological order. generated by jekyll-scholar. -nav: true +nav: false nav_order: 2 --- diff --git a/_pages/repositories.md b/_pages/repositories.md index cba38708..8b263b00 100644 --- a/_pages/repositories.md +++ b/_pages/repositories.md @@ -3,7 +3,7 @@ layout: page permalink: /repositories/ title: repositories description: Edit the `_data/repositories.yml` and change the `github_users` and `github_repos` lists to include your own GitHub profile and repositories. -nav: true +nav: false nav_order: 4 --- diff --git a/_pages/teaching.md b/_pages/teaching.md index 87bb1a5c..02382bbe 100644 --- a/_pages/teaching.md +++ b/_pages/teaching.md @@ -3,7 +3,7 @@ layout: page permalink: /teaching/ title: teaching description: Materials for courses you taught. Replace this text with your description. -nav: true +nav: false nav_order: 6 --- diff --git a/_posts/2024-06-01-computational-photography.md b/_posts/2024-06-01-computational-photography.md new file mode 100644 index 00000000..e5e6287a --- /dev/null +++ b/_posts/2024-06-01-computational-photography.md @@ -0,0 +1,27 @@ +--- +layout: post +title: Computational Photography +date: 2024-06-01 +description: Experimenting with computational photography on vacation! +tags: vacation images photomerge photography +categories: personal +thumbnail: assets/img/japan_trip/Fushimi_Inari_Taisha.jpg +images: + compare: true + slider: true +--- + +I'm currently set to take a course in CV/Computational Photography (CS 180) at Berkeley this Fall. To get a better understanding of the field, I've been experimenting with some of the techniques used in computational photography, such as image stitching, and used my recent trip to Japan as an opportunity to practice. + +### Image Quality + +Some of the resulting images are quite large (2GB), which is not really feasible for a blog post. But at the same time, compression is not ideal for showcasing the quality of the images. While I've tried to strike a balance, the images may take a while to load. To understand how much detail is lost in the compression, I've included a comparison slider for a ~500MB image below. It was compressed to a 9.2 MB JPG and to a 127KB WebP. + + + {% include figure.liquid path="assets/img/japan_trip/Fushimi_Inari_Taisha.jpg" loading="eager" class="img-fluid rounded z-depth-1" slot="first" %} + {% include figure.liquid path="assets/img/japan_trip/Fushimi_Inari_Taisha.jpg" loading="eager" class="img-fluid rounded z-depth-1" slot="second" %} + + +Here is a picture of Mount Fuji. + +{% include figure.liquid path="assets/img/japan_trip/Mount_Fuji.jpg" loading="eager" class="img-fluid rounded z-depth-1" alt="Mount Fuji"%} diff --git a/_projects/1_project.md b/_projects/1_project.md deleted file mode 100644 index ac87b64b..00000000 --- a/_projects/1_project.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: page -title: project 1 -description: with background image -img: assets/img/12.jpg -importance: 1 -category: work -related_publications: true ---- - -Every project has a beautiful feature showcase page. -It's easy to include images in a flexible 3-column grid format. -Make your photos 1/3, 2/3, or full width. - -To give your project a background in the portfolio page, just add the img tag to the front matter like so: - - --- - layout: page - title: project - description: a project with a background image - img: /assets/img/12.jpg - --- - -
-
- {% include figure.liquid loading="eager" path="assets/img/1.jpg" title="example image" class="img-fluid rounded z-depth-1" %} -
-
- {% include figure.liquid loading="eager" path="assets/img/3.jpg" title="example image" class="img-fluid rounded z-depth-1" %} -
-
- {% include figure.liquid loading="eager" path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} -
-
-
- Caption photos easily. On the left, a road goes through a tunnel. Middle, leaves artistically fall in a hipster photoshoot. Right, in another hipster photoshoot, a lumberjack grasps a handful of pine needles. -
-
-
- {% include figure.liquid loading="eager" path="assets/img/5.jpg" title="example image" class="img-fluid rounded z-depth-1" %} -
-
-
- This image can also have a caption. It's like magic. -
- -You can also put regular text between your rows of images, even citations {% cite einstein1950meaning %}. -Say you wanted to write a bit about your project before you posted the rest of the images. -You describe how you toiled, sweated, _bled_ for your project, and then... you reveal its glory in the next row of images. - -
-
- {% include figure.liquid path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} -
-
- {% include figure.liquid path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} -
-
-
- You can also have artistically styled 2/3 + 1/3 images, like these. -
- -The code is simple. -Just wrap your images with `
` and place them inside `
` (read more about the Bootstrap Grid system). -To make images responsive, add `img-fluid` class to each; for rounded corners and shadows use `rounded` and `z-depth-1` classes. -Here's the code for the last row of images above: - -{% raw %} - -```html -
-
- {% include figure.liquid path="assets/img/6.jpg" title="example image" class="img-fluid rounded z-depth-1" %} -
-
- {% include figure.liquid path="assets/img/11.jpg" title="example image" class="img-fluid rounded z-depth-1" %} -
-
-``` - -{% endraw %} diff --git a/_projects/proj_1.md b/_projects/proj_1.md new file mode 100644 index 00000000..d56d2bb8 --- /dev/null +++ b/_projects/proj_1.md @@ -0,0 +1,223 @@ +--- +layout: page +title: Prokudin-Gorskii Photo Collection +description: "Part of CS180 : Intro to Computer Vision and Computational Photography" +img: assets/img/cs180/proj1/naive/onion_church.jpg +importance: 1 +category: school +images: + compare: true + slider: true +pretty_table: true +--- + +Sergei Mikhailovich Prokudin-Gorskii (1863–1944), a Russian photographer and chemist, is best known for his work in early color photography. While color photography was still in its infancy, Prokudin-Gorskii created a camera capable of taking color images through capturing separate black-and-white photographs through red, green, and blue filters. Prokudin-Gorskii believed that eventually these images would be able to be viewed in color through a specialized projector. + +Although Prokudin-Gorskii's dream of color photography was never realized, his work has been digitized and colorized by various individuals and organizations. The Library of Congress has a collection of over 2,000 of his images, which can be viewed [here](https://www.loc.gov/collections/prokudin-gorskii/). + +In this project, my goal is to colorize his one of a kind images. + +## Original Images + +As we can see, Prokudin-Gorskii's pictures were taken in three separate black-and-white images, each with a red, green, or blue filter. The top picture has been shot with a blue filter, the middle with a green filter, and the bottom with a red filter. + +
+
+ {% include figure.liquid path="assets/img/cs180/proj1/data_jpgs/onion_church.jpg" title="Onion Church" class="img-fluid rounded z-depth-1" %} +
+
+ {% include figure.liquid path="assets/img/cs180/proj1/data_jpgs/train.jpg" title="Train" class="img-fluid rounded z-depth-1" %} +
+
+
+ Prokudin-Gorskii's original images. Left: Onion Church. Right: Train. +
+ +From a first glance, it is clear that the channels are not perfectly aligned, nor are their dimensions always the same. In the Onion Church's blue channel, part of the onion dome is cut off, and the red channel seems to be cut short on both the top and bottom. The train's entire slide appears to be larger than the Onion Church's. + +## Naive Approach + +To colorize the images, I first tried a naive approach. I simply stacked the three images on top of each other and used the red, green, and blue channels to create a color image. + + + +```python +# Read in the image +img = skio.imread(img_name) + +# Convert to double +img = sk.img_as_float(img) + +# Compute the height of each channel (just 1/3 of total) +height = np.floor(img.shape[0] / 3.0).astype(np.int32) + +# Separate color channels +b = img[:height] +g = img[height: 2*height] +r = img[2*height: 3*height] + +#Naive Alignment +stacked = np.dstack((r,g,b)) +``` + + + +The results of this naive approach can be seen below. + + + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/cathedral.jpg" title="Cathedral" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/church.jpg" title="Church" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/emir.jpg" title="Emir" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/harvesters.jpg" title="Harvesters" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/icon.jpg" title="Icon" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/lady.jpg" title="Lady" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/melons.jpg" title="Melons" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/monastery.jpg" title="Monastery" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/onion_church.jpg" title="Onion Church" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/sculpture.jpg" title="Sculpture" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/self_portrait.jpg" title="Self Portrait" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/three_generations.jpg" title="Three Generations" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/tobolsk.jpg" title="Tobolsk" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/naive/train.jpg" title="Train" class="img-fluid rounded z-depth-1" %} + + +
+ Naive approach to colorizing Prokudin-Gorskii's images. +
+ +As we can see, the naive approach does not work well. Because the images are not aligned, the produced color image is not accurate. + +## Single Scale Alignment + +The first approach I took towards aligning the images was to use a relatively simple and brute force approach, sliding the image over each other to compare the similarity. I chose to allow maximum displacements of 15 px of each dimension, allowing for some leeway given that images were not perfectly square. I fixed the blue channel, and aligned the green and red channels to the blue channel. This resulted in displacement vectors for the green and red channels that I could use to produce an aligned image. + +### Alignment Metric + +While sliding the images over each other, it may be easy for a human to tell when they are alligned, however it is not so trivial for a computer. To allign our images we need to have a metric to quantify the alignment of the images. The one that I settled upon was the Normalized Dot Product. + +$$ +A \cdot B = \|A\| \cdot \|B\| \cdot \cos(\theta) +$$ + +Where $\|A\|$ and $\|B\|$ are the magnitudes of the vectors and $\theta$ is the angle between them. The normalized dot product is defined as: + +$$ +NDP = \frac{A \cdot B}{\|A\| \cdot \|B\|} +$$ + +With some algebra, we can see that the normalized dot product is equal to the cosine similarity between the two vectors. The cosine similarity is a measure of similarity between two non-zero vectors of an inner product space that measures the cosine of the angle between them. The cosine of 0 degrees is 1, and it is less than 1 for any other angle. Thus we have our heuristic, where the closer the normalized dot product is to 1, the more "aligned" we believe the images to be. + +However, at the resolutions where a single scale level approach is reasonable (the search space increases exponentially as the image grows) I found that often using a heuristic such as the Normalized Dot Product or Mean Squared Error was not enough to accurately align the images. The images would often be content with 0,0 displacement. As such, I decided to use an extracted feature from the images to align them. + +### Alignment Heuristic + +I settled on using image edges as the feature to align the images. While I originally developed my own rudimentary edge detector by traversing the image top to bottom and left to right, and noting changes over a threshold, and merging them with a logical or, the custom edge detection was both slow and unreliable for larger images. I used the Canny edge detector to extract the edges from the images. + +Prior to extracting the edges from our image, it is important to note that because our images are noisy, this can greatly hamper the output of our edge detection. + +
+
+ {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/extras/edge_detection_comparison.jpg" title="Edge Detection Comparison" class="img-fluid rounded z-depth-1" %} +
+
+
+ An example of how gaussian blurring helps preserve edges and remove noise. +
+ +Lastly, because the border of Prokudin-Gorskii's images are white and then black, the edge detection produces very strong lines that are not affected by the gaussian blurring. These lines are not features that we want to consider in aligning our image because the border does not correspond to the actual alignment of the image. Therefore, we take a 15% crop on all sides of the channel, removing the border and any defects that may have arisen from the border intruding into the exposure. + +### Conclusion + +Our end result processes the JPEGs from Prokudin-Gorskii's collection in a matter of seconds. +I am using the common image coordinate system, where the origin is at the top left corner of the image, and the x-axis is positive to the right and the y-axis is positive downwards. The dY, and dX values are the displacements in the y and x directions respectively. + + + + + + + + + + + + +
NameComputation Time(s)Green dYGreen dXRed dYRed dX
+ +### Examples + + + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/monastery.jpg" title="Monastery" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/tobolsk.jpg" title="Tobolsk" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/cathedral.jpg" title="Cathedral" class="img-fluid rounded z-depth-1" %} + + +## Multi Scale Alignment + +We will now be dealing with much larger images, where each channel's dimensions are around 3 thousand pixels. A smaller 10% displacement in each direction would result in a search space of 300 by 300 pixels. This 90,000 pixel search space is not feasible to search through, and as such we will be using a multi-scale approach to align our images. + +### Gaussian Pyramids + +To represent images are lower resolutions, we will be using Gaussian Pyramids. A Gaussian Pyramid is a collection of images, where each image is a smoothed and downscaled version of the image below it. The bottom of the pyramid is the original image, and the top of the pyramid is the smallest image, as such the pyramid consists of layers. By convention, the original image is the 0th layer, and the smallest image is the $$k$$th layer. + +### Formula for Maximum Displacement + +We can make some observations at this point. Because at each layer our displacement from the layer above doubles, there must be an optimal displacement range such that we can attain a large allignment precision. At layer $$k$$, a single pixel shift corresponds to a shift of $$2^k$$ pixels in the original image. Our maximum displacement can be considered another value, let's use $$r$$, and the area we are trying to cover, in our earlier example 15%, can become $$p$$. Additionally, let us consider our highest layer to be $$L$$. $$n$$ is the number of pixels in the dimension we are trying to align. + + + +$$ +p \cdot n = \sum_{k=0}^{L} r \cdot {2^k} +$$ + +$$ +p \cdot n = ({2^{L+1} - 1}) \cdot r +$$ + +$$ +\left(\frac{p \cdot n}{2^{L+1}-1}\right) = r +$$ + +Now that we have a formula for our maximum displacement, we must decide on fixing the variables $$p$$ and $$L$$. Upon rounds of testing, and specific increases to allow for the alignment of melons, I settled on $$p$$ to be 10%. Because r decreases as L increases, a higher L will allow for a faster alignment, as there will be more layers, but the search space in each will be smaller. This is trading the exponential growth of the search space for the linear growth of the number of layers. However, as L increases, the resolution of the image decreases, and the edge heuristics become less reliable. I settled on computing and choosing an L such that the smallest dimension of the image at layer L is ~50 pixels. + +This method was shared with the single scale alignment, however because there are 0 layers, it increased the search space to 10% of the level 0 image, usually around 300 pixels. This resulted in slightly higher computation times than before, but still on the order of seconds, so the times above are from this version. + +### Conclusion + +The multi-scale alignment approach is able to align the images with a high degree of accuracy, and with incredible speed! The images are aligned in a matter of seconds, and the results are quite impressive. While using a fixed L of 5, the tiff images took on the order of 4 minutes to complete allignment at level 0. However, with a variable L, the images are aligned in a matter of seconds. + + + + + + + + + + + + +
NameComputation Time(s)Green dYGreen dXRed dYRed dX
+ +### Examples + + + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/church.jpg" title="Church" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/emir.jpg" title="Emir" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/harvesters.jpg" title="Harvesters" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/icon.jpg" title="Icon" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/lady.jpg" title="Lady" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/melons.jpg" title="Melons" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/onion_church.jpg" title="Onion Church" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/sculpture.jpg" title="Sculpture" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/self_portrait.jpg" title="Self Portrait" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/three_generations.jpg" title="Three Generations" class="img-fluid rounded z-depth-1" %} + {% include figure.liquid loading="eager" path="assets/img/cs180/proj1/output/train.jpg" title="Train" class="img-fluid rounded z-depth-1" %} + + +## Side Notes + +Some other things I tried was using phase based correlation to align the images, however after refactoring my code, I found that the function was no longer working. Irregardless, I was able to verify the accuracy of my alignment using sci-kit image's phase based correlation method, and found that my alignment agreed well with the results of the phase based correlation. diff --git a/assets/img/cs180/proj1/data_jpgs/cathedral.jpg b/assets/img/cs180/proj1/data_jpgs/cathedral.jpg new file mode 100644 index 00000000..061d6eff Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/cathedral.jpg differ diff --git a/assets/img/cs180/proj1/data_jpgs/church.jpeg b/assets/img/cs180/proj1/data_jpgs/church.jpeg new file mode 100644 index 00000000..bd21d5bd Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/church.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/emir.jpeg b/assets/img/cs180/proj1/data_jpgs/emir.jpeg new file mode 100644 index 00000000..06e3ca50 Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/emir.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/harvesters.jpeg b/assets/img/cs180/proj1/data_jpgs/harvesters.jpeg new file mode 100644 index 00000000..5a4ca8c8 Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/harvesters.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/icon.jpeg b/assets/img/cs180/proj1/data_jpgs/icon.jpeg new file mode 100644 index 00000000..34e28438 Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/icon.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/lady.jpeg b/assets/img/cs180/proj1/data_jpgs/lady.jpeg new file mode 100644 index 00000000..6e9b8ece Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/lady.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/melons.jpeg b/assets/img/cs180/proj1/data_jpgs/melons.jpeg new file mode 100644 index 00000000..7e16defb Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/melons.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/monastery.jpg b/assets/img/cs180/proj1/data_jpgs/monastery.jpg new file mode 100644 index 00000000..7e2552f9 Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/monastery.jpg differ diff --git a/assets/img/cs180/proj1/data_jpgs/onion_church.jpeg b/assets/img/cs180/proj1/data_jpgs/onion_church.jpeg new file mode 100644 index 00000000..f22c0e71 Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/onion_church.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/sculpture.jpeg b/assets/img/cs180/proj1/data_jpgs/sculpture.jpeg new file mode 100644 index 00000000..a3e74287 Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/sculpture.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/self_portrait.jpeg b/assets/img/cs180/proj1/data_jpgs/self_portrait.jpeg new file mode 100644 index 00000000..95fd71d9 Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/self_portrait.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/three_generations.jpeg b/assets/img/cs180/proj1/data_jpgs/three_generations.jpeg new file mode 100644 index 00000000..100d7d03 Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/three_generations.jpeg differ diff --git a/assets/img/cs180/proj1/data_jpgs/tobolsk.jpg b/assets/img/cs180/proj1/data_jpgs/tobolsk.jpg new file mode 100644 index 00000000..2f16945c Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/tobolsk.jpg differ diff --git a/assets/img/cs180/proj1/data_jpgs/train.jpeg b/assets/img/cs180/proj1/data_jpgs/train.jpeg new file mode 100644 index 00000000..4961fa6b Binary files /dev/null and b/assets/img/cs180/proj1/data_jpgs/train.jpeg differ diff --git a/assets/img/cs180/proj1/extras/edge_detection_comparison.jpg b/assets/img/cs180/proj1/extras/edge_detection_comparison.jpg new file mode 100644 index 00000000..db9add65 Binary files /dev/null and b/assets/img/cs180/proj1/extras/edge_detection_comparison.jpg differ diff --git a/assets/img/cs180/proj1/naive/cathedral.jpg b/assets/img/cs180/proj1/naive/cathedral.jpg new file mode 100644 index 00000000..f5396fe0 Binary files /dev/null and b/assets/img/cs180/proj1/naive/cathedral.jpg differ diff --git a/assets/img/cs180/proj1/naive/church.jpg b/assets/img/cs180/proj1/naive/church.jpg new file mode 100644 index 00000000..4633e117 Binary files /dev/null and b/assets/img/cs180/proj1/naive/church.jpg differ diff --git a/assets/img/cs180/proj1/naive/emir.jpg b/assets/img/cs180/proj1/naive/emir.jpg new file mode 100644 index 00000000..dfe75af0 Binary files /dev/null and b/assets/img/cs180/proj1/naive/emir.jpg differ diff --git a/assets/img/cs180/proj1/naive/harvesters.jpg b/assets/img/cs180/proj1/naive/harvesters.jpg new file mode 100644 index 00000000..233ba490 Binary files /dev/null and b/assets/img/cs180/proj1/naive/harvesters.jpg differ diff --git a/assets/img/cs180/proj1/naive/icon.jpg b/assets/img/cs180/proj1/naive/icon.jpg new file mode 100644 index 00000000..9965b68d Binary files /dev/null and b/assets/img/cs180/proj1/naive/icon.jpg differ diff --git a/assets/img/cs180/proj1/naive/lady.jpg b/assets/img/cs180/proj1/naive/lady.jpg new file mode 100644 index 00000000..8861f936 Binary files /dev/null and b/assets/img/cs180/proj1/naive/lady.jpg differ diff --git a/assets/img/cs180/proj1/naive/melons.jpg b/assets/img/cs180/proj1/naive/melons.jpg new file mode 100644 index 00000000..f2bb568c Binary files /dev/null and b/assets/img/cs180/proj1/naive/melons.jpg differ diff --git a/assets/img/cs180/proj1/naive/monastery.jpg b/assets/img/cs180/proj1/naive/monastery.jpg new file mode 100644 index 00000000..2fd5949a Binary files /dev/null and b/assets/img/cs180/proj1/naive/monastery.jpg differ diff --git a/assets/img/cs180/proj1/naive/onion_church.jpg b/assets/img/cs180/proj1/naive/onion_church.jpg new file mode 100644 index 00000000..27f8553f Binary files /dev/null and b/assets/img/cs180/proj1/naive/onion_church.jpg differ diff --git a/assets/img/cs180/proj1/naive/sculpture.jpg b/assets/img/cs180/proj1/naive/sculpture.jpg new file mode 100644 index 00000000..3eb54368 Binary files /dev/null and b/assets/img/cs180/proj1/naive/sculpture.jpg differ diff --git a/assets/img/cs180/proj1/naive/self_portrait.jpg b/assets/img/cs180/proj1/naive/self_portrait.jpg new file mode 100644 index 00000000..2cdb95b5 Binary files /dev/null and b/assets/img/cs180/proj1/naive/self_portrait.jpg differ diff --git a/assets/img/cs180/proj1/naive/three_generations.jpg b/assets/img/cs180/proj1/naive/three_generations.jpg new file mode 100644 index 00000000..ff5a9b13 Binary files /dev/null and b/assets/img/cs180/proj1/naive/three_generations.jpg differ diff --git a/assets/img/cs180/proj1/naive/tobolsk.jpg b/assets/img/cs180/proj1/naive/tobolsk.jpg new file mode 100644 index 00000000..1090579d Binary files /dev/null and b/assets/img/cs180/proj1/naive/tobolsk.jpg differ diff --git a/assets/img/cs180/proj1/naive/train.jpg b/assets/img/cs180/proj1/naive/train.jpg new file mode 100644 index 00000000..4c0692ca Binary files /dev/null and b/assets/img/cs180/proj1/naive/train.jpg differ diff --git a/assets/img/cs180/proj1/output/cathedral.jpg b/assets/img/cs180/proj1/output/cathedral.jpg new file mode 100644 index 00000000..86977416 Binary files /dev/null and b/assets/img/cs180/proj1/output/cathedral.jpg differ diff --git a/assets/img/cs180/proj1/output/church.jpg b/assets/img/cs180/proj1/output/church.jpg new file mode 100644 index 00000000..8ed20bfe Binary files /dev/null and b/assets/img/cs180/proj1/output/church.jpg differ diff --git a/assets/img/cs180/proj1/output/emir.jpg b/assets/img/cs180/proj1/output/emir.jpg new file mode 100644 index 00000000..dd7cb725 Binary files /dev/null and b/assets/img/cs180/proj1/output/emir.jpg differ diff --git a/assets/img/cs180/proj1/output/harvesters.jpg b/assets/img/cs180/proj1/output/harvesters.jpg new file mode 100644 index 00000000..714869e4 Binary files /dev/null and b/assets/img/cs180/proj1/output/harvesters.jpg differ diff --git a/assets/img/cs180/proj1/output/icon.jpg b/assets/img/cs180/proj1/output/icon.jpg new file mode 100644 index 00000000..acf1bad6 Binary files /dev/null and b/assets/img/cs180/proj1/output/icon.jpg differ diff --git a/assets/img/cs180/proj1/output/lady.jpg b/assets/img/cs180/proj1/output/lady.jpg new file mode 100644 index 00000000..f1ee7894 Binary files /dev/null and b/assets/img/cs180/proj1/output/lady.jpg differ diff --git a/assets/img/cs180/proj1/output/melons.jpg b/assets/img/cs180/proj1/output/melons.jpg new file mode 100644 index 00000000..61d64047 Binary files /dev/null and b/assets/img/cs180/proj1/output/melons.jpg differ diff --git a/assets/img/cs180/proj1/output/monastery.jpg b/assets/img/cs180/proj1/output/monastery.jpg new file mode 100644 index 00000000..ff6a4200 Binary files /dev/null and b/assets/img/cs180/proj1/output/monastery.jpg differ diff --git a/assets/img/cs180/proj1/output/onion_church.jpg b/assets/img/cs180/proj1/output/onion_church.jpg new file mode 100644 index 00000000..90329ed2 Binary files /dev/null and b/assets/img/cs180/proj1/output/onion_church.jpg differ diff --git a/assets/img/cs180/proj1/output/sculpture.jpg b/assets/img/cs180/proj1/output/sculpture.jpg new file mode 100644 index 00000000..9ad02cd2 Binary files /dev/null and b/assets/img/cs180/proj1/output/sculpture.jpg differ diff --git a/assets/img/cs180/proj1/output/self_portrait.jpg b/assets/img/cs180/proj1/output/self_portrait.jpg new file mode 100644 index 00000000..039cfd75 Binary files /dev/null and b/assets/img/cs180/proj1/output/self_portrait.jpg differ diff --git a/assets/img/cs180/proj1/output/three_generations.jpg b/assets/img/cs180/proj1/output/three_generations.jpg new file mode 100644 index 00000000..0ae68e3c Binary files /dev/null and b/assets/img/cs180/proj1/output/three_generations.jpg differ diff --git a/assets/img/cs180/proj1/output/tobolsk.jpg b/assets/img/cs180/proj1/output/tobolsk.jpg new file mode 100644 index 00000000..d5762564 Binary files /dev/null and b/assets/img/cs180/proj1/output/tobolsk.jpg differ diff --git a/assets/img/cs180/proj1/output/train.jpg b/assets/img/cs180/proj1/output/train.jpg new file mode 100644 index 00000000..d40b4544 Binary files /dev/null and b/assets/img/cs180/proj1/output/train.jpg differ diff --git a/assets/img/japan_trip/Fushimi_Inari_Taisha.jpg b/assets/img/japan_trip/Fushimi_Inari_Taisha.jpg new file mode 100644 index 00000000..79ff2af0 Binary files /dev/null and b/assets/img/japan_trip/Fushimi_Inari_Taisha.jpg differ diff --git a/assets/img/japan_trip/Mount_Fuji.jpg b/assets/img/japan_trip/Mount_Fuji.jpg new file mode 100644 index 00000000..31fbfc79 Binary files /dev/null and b/assets/img/japan_trip/Mount_Fuji.jpg differ diff --git a/assets/img/prof_pic.jpg b/assets/img/prof_pic.jpg index 46bcf9c9..06f14f1a 100644 Binary files a/assets/img/prof_pic.jpg and b/assets/img/prof_pic.jpg differ diff --git a/assets/json/cs180/proj1/jpg_results.json b/assets/json/cs180/proj1/jpg_results.json new file mode 100644 index 00000000..f12851d8 --- /dev/null +++ b/assets/json/cs180/proj1/jpg_results.json @@ -0,0 +1,26 @@ +[ + { + "name": "monastery.jpg", + "time": 5.94, + "green_y_offset": -3, + "green_x_offset": 2, + "red_y_offset": 3, + "red_x_offset": 2 + }, + { + "name": "tobolsk.jpg", + "time": 6.97, + "green_y_offset": 3, + "green_x_offset": 3, + "red_y_offset": 6, + "red_x_offset": 3 + }, + { + "name": "cathedral.jpg", + "time": 6.35, + "green_y_offset": 5, + "green_x_offset": 2, + "red_y_offset": 12, + "red_x_offset": 3 + } +] diff --git a/assets/json/cs180/proj1/tiff_results.json b/assets/json/cs180/proj1/tiff_results.json new file mode 100644 index 00000000..992a208b --- /dev/null +++ b/assets/json/cs180/proj1/tiff_results.json @@ -0,0 +1,90 @@ +[ + { + "name": "emir.tif", + "time": 7.79, + "green_y_offset": 49, + "green_x_offset": 23, + "red_y_offset": 107, + "red_x_offset": 40 + }, + { + "name": "church.tif", + "time": 6.43, + "green_y_offset": 24, + "green_x_offset": 4, + "red_y_offset": 58, + "red_x_offset": -4 + }, + { + "name": "three_generations.tif", + "time": 6.91, + "green_y_offset": 55, + "green_x_offset": 18, + "red_y_offset": 111, + "red_x_offset": 8 + }, + { + "name": "melons.tif", + "time": 7.67, + "green_y_offset": 80, + "green_x_offset": 10, + "red_y_offset": 173, + "red_x_offset": 9 + }, + { + "name": "onion_church.tif", + "time": 8.07, + "green_y_offset": 52, + "green_x_offset": 24, + "red_y_offset": 107, + "red_x_offset": 35 + }, + { + "name": "train.tif", + "time": 8.29, + "green_y_offset": 43, + "green_x_offset": 7, + "red_y_offset": 86, + "red_x_offset": 34 + }, + { + "name": "icon.tif", + "time": 7.36, + "green_y_offset": 39, + "green_x_offset": 16, + "red_y_offset": 90, + "red_x_offset": 23 + }, + { + "name": "self_portrait.tif", + "time": 6.85, + "green_y_offset": 77, + "green_x_offset": 29, + "red_y_offset": 172, + "red_x_offset": 34 + }, + { + "name": "harvesters.tif", + "time": 7.01, + "green_y_offset": 60, + "green_x_offset": 17, + "red_y_offset": 124, + "red_x_offset": 14 + }, + { + "name": "sculpture.tif", + "time": 7.28, + "green_y_offset": 33, + "green_x_offset": -11, + "red_y_offset": 137, + "red_x_offset": -25 + }, + { + "name": "lady.tif", + "time": 7.23, + "green_y_offset": 56, + "green_x_offset": 10, + "red_y_offset": 120, + "red_x_offset": 13 + } +] diff --git a/assets/json/resume.json b/assets/json/resume.json index 5ab5ecac..3f587948 100644 --- a/assets/json/resume.json +++ b/assets/json/resume.json @@ -1,200 +1,128 @@ { "basics": { - "name": "Albert Einstein", - "label": "Scientist", + "name": "Naman Satish", + "label": "Student", "image": "", - "email": "albert@einstein.de", - "phone": "(912) 123-4567", - "url": "https://alshedivat.github.io/al-folio/", - "summary": "A German-born theoretical physicist, widely ranked among the greatest and most influential scientists of all time", + "email": "naman(at)berkeley.edu", + "url": "https://satish.dev", + "summary": "Passionate in the applications of ML in predictive health", "location": { - "address": "2712 Broadway St", - "postalCode": "CA 94115", - "city": "San Francisco", + "address": "", + "postalCode": "", + "city": "Berkeley", "countryCode": "US", "region": "California" }, "profiles": [ { - "network": "Twitter", - "username": "AlbertEinstein", - "url": "https://twitter.com/AlbertEinstein" + "network": "LinkedIn", + "username": "namansatish", + "url": "https://www.linkedin.com/in/naman-satish/" + }, + { + "network": "GitHub", + "username": "namansatish", + "url": "https://www.github.com/namansatish" } ] }, "work": [ { - "name": "Institute for Advanced Study, Princeton University", - "position": "Professor of Theoretical Physics", - "url": "https://example.com", - "startDate": "1933-01-01", - "endDate": "1955-01-01", - "summary": "Teaching at Palmer Physical Laboratory (now 302 Frist Campus Center). While not a professor at Princeton, I associated with the physics professors and continued to give lectures on campus.", - "highlights": ["Relativity"] - } - ], - "volunteer": [ + "name": "Henry Roland Lab @ UCSF", + "position": "Student Researcher", + "url": "https://henrylab.ucsf.edu/", + "startDate": "2023-09-01", + "endDate": " ", + "summary": "Developing ML models to predict patient's percent brain volume changes using MRI scans along with clinical data, with a focus on the application of graph neural networks to model longitudinal brain morphology.", + "highlights": ["Machine Learning", "Graph Neural Networks", "Predictive Health"] + }, { - "organization": "People's Climate March", - "location": "Zurich, Switzerland", - "position": "Lead Organizer", - "url": "https://example.com", - "startDate": "2014-04-01", - "endDate": "2015-07-01", - "summary": "Lead organizer for the New York City branch of the People's Climate March, the largest climate march in history.", - "highlights": ["Awarded 'Climate Hero' award by Greenpeace for my efforts organizing the march.", "Men of the year 2014 by Time magazine"] + "name": "Berkeley Model United Nations", + "position": "Chief Technology Officer", + "url": "https://www.bmun.org/", + "startDate": "2023-04-01", + "endDate": "2024-04-01", + "summary": "Maintained Django-based conference management system with peaks of 1500 users, developed scripting to automate calendar invitations, and partnered with Turnitin to scan research papers for plagarism.", + "highlights": ["Software Development", "Django", "Automation"] } ], "education": [ { - "institution": "University of Zurich, Zurich, Switzerland", - "location": "Zurich, Switzerland", - "url": "https://www.uzh.ch/", - "area": "Software Development", - "studyType": "PhD", - "startDate": "1905-01-01", - "endDate": "1905-01-01", + "institution": "University of California, Berkeley", + "location": "Berkeley, CA", + "url": "https://www.berkeley.edu/", + "area": "Electrical Engineering & Computer Science", + "studyType": "Bachelor of Science", + "startDate": "2021-08-01", + "endDate": "2025-05-01", "score": "10", - "courses": ["Theory of Relativity"] + "courses": [ + "The Structure and Interpretation of Computer Programs", + "Data Structures", + "Efficient Algorithms and Intractable Problems", + "Introduction to Machine Learning", + "Computer Security", + "Great Ideas in Computer Architecture", + "Intro to Computer Vision and Computational Photography", + "Introduction to the Internet: Architecture and Protocols", + "Principles and Techniques of Data Science", + "Introduction to Robotics" + ] } ], "awards": [ { - "title": "Nobel Prize in Physics", - "date": "1921-11-01", - "awarder": "Royal Swedish Academy of Sciences", - "url": "https://www.nobelprize.org/prizes/physics/1921/einstein/biographical/", - "summary": "The Nobel Prizes are five separate prizes that, according to Alfred Nobel's will of 1895, are awarded to 'those who, during the preceding year, have conferred the greatest benefit to humankind.'" - } - ], - "certificates": [ - { - "name": "Machine Learning", - "date": "2018-01-01", - "issuer": "Stanford University", - "url": "https://example.com", - "icon": "fa-solid fa-location-dot" - }, - { - "name": "Quantum Computing", - "date": "2018-01-01", - "issuer": "Stanford University", - "url": "https://example.com", - "icon": "fa-solid fa-tag" + "title": "Eagle Scout Award", + "date": "2020-10-01", + "awarder": "Boy Scouts of America", + "url": "https://www.nobelprize.org/prizes/physics/1921/einstein/biographical/" }, { - "name": "Quantum Information", - "date": "2018-01-01", - "issuer": "Stanford University", - "url": "https://example.com", - "icon": "fa-solid fa-envelope" - }, - { - "name": "Quantum Cryptography", - "date": "2018-01-01", - "issuer": "Stanford University", - "url": "https://example.com", - "icon": "fa-solid fa-hashtag" - }, - { - "name": "Quantum Communication", - "date": "2018-01-01", - "issuer": "Stanford University", - "url": "https://example.com", - "icon": "fa-solid fa-calendar" - }, - { - "name": "Quantum Teleportation", - "date": "2018-01-01", - "issuer": "Stanford University", - "url": "https://example.com", - "icon": "fa-solid fa-clipboard-check" + "title": "Edison Scholar", + "date": "2021-10-01", + "awarder": "Edison International", + "url": "https://energized.edison.com/meet-our-2021-edison-scholars-6837617" } ], - "publications": [ + "skills": [ { - "name": "Zur Elektrody/namik bewegter Körper", - "publisher": "Annalen der Physik", - "releaseDate": "1905-06-30", - "url": "https://en.wikisource.org/wiki/Translation:On_the_Electrodynamics_of_Moving_Bodies", - "summary": "It concerned an interpretation of the Michelson–Morley experiment and the properties of light and time. Special relativity incorporates the principle that the speed of light is the same for all inertial observers regardless of the state of motion of the source." + "name": "CS Domains", + "level": "Master", + "icon": "fa-solid fa-laptop-code", + "keywords": [ + "Algorithms", + "Data Structures", + "Machine Learning", + "Computer Vision", + "Robotics", + "Computer Security", + "Computer Architecture", + "Data Science" + ] }, { - "name": "Über einen die Erzeugung und Verwandlung des Lichtes betreffenden heuristischen Gesichtspunkt", - "publisher": "Annalen der Physik", - "releaseDate": "1905-03-18", - "url": "https://de.wikisource.org/wiki/Über_einen_die_Erzeugung_und_Verwandlung_des_Lichtes_betreffenden_heuristischen_Gesichtspunkt", - "summary": "In the second paper, he applied the quantum theory to light to explain the photoelectric effect. In particular, he used the idea of light quanta (photons) to explain experimental results, but stressed the importance of the experimental results. The importance of his work on the photoelectric effect earned him the Nobel Prize in Physics in 1921." + "name": "Programming Languages", + "level": "Master", + "icon": "fa-solid fa-code", + "keywords": ["Python", "Java", "C/C++", "Go", "JavaScript", "SQL"] }, { - "name": "Die Grundlage der allgemeinen Relativitätstheorie", - "publisher": "Annalen der Physik", - "releaseDate": "1916-03-20", - "url": "https://de.wikisource.org/wiki/Die_Grundlage_der_allgemeinen_Relativitätstheorie", - "summary": "The publication of the theory of general relativity made him internationally famous. He was professor of physics at the universities of Zurich (1909–1911) and Prague (1911–1912), before he returned to ETH Zurich (1912–1914)." - } - ], - "skills": [ - { - "name": "Physics", + "name": "Machine Learning", "level": "Master", - "icon": "fa-solid fa-hashtag", - "keywords": [ - "Quantum Mechanics", - "Quantum Computing", - "Quantum Information", - "Quantum Cryptography", - "Quantum Communication", - "Quantum Teleportation" - ] + "icon": "fa-solid fa-robot", + "keywords": ["PyTorch", "TensorFlow", "Scikit-learn", "OpenCV", "Pandas", "Numpy", "Matplotlib", "Seaborn", "Jupyter"] } ], "languages": [ { - "language": "German", + "language": "English", "fluency": "Native speaker", "icon": "" }, { - "language": "English", - "fluency": "Fluent", + "language": "Kannada", + "fluency": "Native speaker", "icon": "" } - ], - "interests": [ - { - "name": "Physics", - "icon": "fa-solid fa-tag", - "keywords": [ - "Quantum Mechanics", - "Quantum Computing", - "Quantum Information", - "Quantum Cryptography", - "Quantum Communication", - "Quantum Teleportation" - ] - } - ], - "references": [ - { - "name": "Professor John Doe", - "icon": "fa-solid fa-laptop", - "reference": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit. D" - }, - { - "name": "Professor John Doe", - "icon": "fa-solid fa-thumbtack", - "reference": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam condimentum, diam quis convallis euismod, arcu mi ullamcorper lorem, a vestibulum nunc magna at sem. Sed in risus ac felis varius blandit. D" - } - ], - "projects": [ - { - "name": "Quantum Computing", - "summary": "Quantum computing is the use of quantum-mechanical phenomena such as superposition and entanglement to perform computation. Computers that perform quantum computations are known as quantum computers.", - "highlights": ["Quantum Teleportation", "Quantum Cryptography"], - "startDate": "2018-01-01", - "endDate": "2018-01-01", - "url": "https://example.com" - } ] } diff --git a/assets/pdf/Naman_Satish_Resume.pdf b/assets/pdf/Naman_Satish_Resume.pdf new file mode 100644 index 00000000..b84e811c Binary files /dev/null and b/assets/pdf/Naman_Satish_Resume.pdf differ diff --git a/package-lock.json b/package-lock.json index 4a690276..2a990c5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "master", + "name": "namansatish.github.io", "lockfileVersion": 3, "requires": true, "packages": { "": { "devDependencies": { "@shopify/prettier-plugin-liquid": "1.4.0", - "prettier": "3.1.1" + "prettier": "^3.1.1" } }, "node_modules/@shopify/liquid-html-parser": { @@ -80,6 +80,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, diff --git a/package.json b/package.json index dc4c51ab..f5d2123c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "devDependencies": { "@shopify/prettier-plugin-liquid": "1.4.0", - "prettier": "3.1.1" + "prettier": "^3.1.1" } }