SlideShare a Scribd company logo
1 of 24
Download to read offline
CS 6475 - Fall 2019
Computational Photography
Final Portfolio
Richard Marin Benavides
CS6475 - Fall 2019
CS 6475 - Fall 2019
Assignment #1: Epsilon Photography
Purpose:​
The purpose of Epsilon Photography is to capture multiple images but modifying only one parameter by a
small amount. This parameter can be the focal point, the picture exposure, view point, aperture, etc.
For this project, I choose to modify a “small” variations of color hue in the input photographs:
Input 1 Input 2 Input 3 Input 4 Input 5 Input 6
Output= Final Artifact
Description:
Each different source image is illuminated with programmable
LED Light where the color hue can be adjusted.
The image 1 starts with yellow hue; for image 2, the hue is
increased with an small amount making it close to orange; for
image 3 it is increased closer to a red hue; and so on.
Blending these epsilon hues across the light spectrum would let
me to obtain a Final Artifact as if only one image were taken
using only white light
CS 6475 - Fall 2019
Assignment #1: Epsilon Photography
Key Learnings:
▪ The Final artifact demonstrates the epsilon (color hue) by
combining a subsample of the colors hues of the visible
spectrum, one hue per source image, in order to create a
composed final artifact with a different color hue from any
of the input images.
▪ Even a small amount of hue color subsample from the
wheel of colors let me to reproduce a the white light by
the combination of all colors.
▪ Planning ahead and understanding the concept of how
light works before hand helped to produce a very nice and
expected output when using epsilon photography.
▪ For epsilon photography is really important to work in
manual mode and have full control of the camera settings
and external factors like light conditions.
The color
combination
produce
white
CS 6475 - Fall 2019
Assignment #2: Camera Obscura
this window use cardboards
to block the light, this points
to the scene
All light should be blocked in the
room, I used here a blanked in one of
the windows
Purpose:
The purpose of this project was to build and document the construction of a Camera Obscura inside a room. By
building this camera one can learn of modern cameras since it can serve as a basic model where similar
principles of image formation applies.
The Room should be completely dark where the light enters through a pin-hole and the outside image is
projected in the room wall that is opposite to the hole.
Room setup:
Previous window use
multiple aperture
selector
Only one aperture is
selected at the time
CS 6475 - Fall 2019
Assignment #2: Camera Obscura, Room Wall Projections Captures
Image 1: The Outside scene are some
trees and plants
Image 2. Pinhole diameter: 1.5cm
Camera Settings: Aperture: f/3.5, Shutter Speed:
30s, ISO: 800
Image 3. Above and beyond: double aperture
slits of dimensions 1cm by 4cm and separated by
2cm creates interference Camera Settings:
Aperture: f/3.5, Shutter Speed: 20s, ISO: 560
Key Learnings:
▪ The Pinhole aperture determines how much light
reach to the sensor at a given moment, the
smaller the aperture more time is required to
acquire enough light (exposure time).
▪ The light is very difficult to cover, even a small
leakage can change the final image.
▪ The aperture size affects significantly the depth of
field, with bigger apertures one can create more
blurriness to whatever is not in focus.
▪ The field of view does not depend on the aperture
size but depends of the distance between the
sensor and aperture (typically the focal point in a
camera and where the sensor is located), also it
depends on the size of the sensor, so with the
same lens, cameras with bigger sensors have
bigger FOV.
▪ Multiple holes open create interference between
images by combining rays that comes from the
same point but are projected at different regions
of the screen (see above and beyond picture).
CS 6475 - Fall 2019
Assignment #3: Blending
Purpose
This assignment idea is to implement the
pyramid blending pipeline in order to combine
multiple images into a seamlessly blended
image.
Gaussian pyramids are created by
consecutive (levels) gaussian blurring and
scaling down.
The Laplacian pyramid is created by scaling
up the levels of the Gaussian Pyramid and
saving the difference between each level.
The pyramids are created for the two images
to blend. A Gaussian pyramid of the mask is
used to alpha blend each of the Laplacian
levels of the of the input images.
Image 1
Image 2
Final Result
CS 6475 - Fall 2019
Assignment #3: Blending with 5 level Pyramids
Key Learnings
▪ Doing a blending by decomposing the
image in multiple levels, allows to
preserve information of images across
different frequencies.
▪ As the level in the pyramid is increased
the high level details are filter and low
level details (low frequencies) are the
visible ones.
▪ The final artifact is composed by
summing up the frequency information
of each level.
▪ Using a mask a simple formula like
alpha blending allows to select what part
is desired of each image
Image 1
Image 2
Mask
Gaussian Pyramid Image 1
Laplacian Pyramid Image 1
Gaussian Pyramid Mask
Gaussian Pyramid Image 1
Laplacian Pyramid Image 1
Alpha Blend each level Result: Adding each level
CS 6475 - Fall 2019
Assignment #4: Panoramas
Purpose
The purpose of this assignment is to align and stitch together a overlapping sets of
images into a panorama. The panorama are created automatically by aligning, warping and blending
images created by rotating the camera from left to right and maintaining single point (axis rotation) of
rotation.
Setup of Camera
mounted in tripod
Single point rotation and
graded angle control
5° rot
Final Panorama Result
Image 1 Image 2 Image 3
5° rot
CS 6475 - Fall 2019
Assignment #4: Panoramas
Key Learnings
▪ Implementing panoramas in a seamlessly way
requires to find features as anchor points
between images so they can be warped and
aligned correctly.
▪ A good panorama constructed by this method
a single point rotation of the camera. The
pictures are planar projections of those rotated
views.
▪ As experimented in this project for the Above
and Beyond section, blending the images
using a gaussian step function produces very
good results.
▪ For each two consecutive images, they have
to be aligned by finding similar features and
the perspective warped so the images can be
blended seamlessly
Gaussian Step function Gaussian Step Mask
White Masked Image 1 Black Masked Image 2
Two different consecutive images aligned and stitched
Blending of two consecutive images
CS 6475 - Fall 2019
Assignment #5: HDR
Purpose
The purpose of this assignment was
to combine multiple images at
different exposures into a single
output image with higher dynamic
range compared to any of the
inputs.
All the inputs are used to computed
the response curve of the camera to
the scene. This response curve is
used to compute the radiance map
which contains details of both
darker and brighter regions of the
scene.
The radiance map then can be tone
mapped to improved the colors and
contrast in the output image
Image 1: 1/10 s
Image 2: 1/6 s
Image 3: 1/3 s Image 4: 0.67 s Image 5: 1.5 s
Result HDR Image with tone mapping
CS 6475 - Fall 2019
Assignment #5: HDR
Key Learnings
▪ To create a good HDR image one should try first to expose
“correctly” the main subject of the image. From the first exposure,
a series of increased and decreased exposures images should be
taken. When each stop increase or decrease, it doubles or halves
the amount light irradiated to the sensor by changing the time the
shutter is open. Just for illustration, the set of exposures in
seconds: [1/10, 1/6, 1/3, 0.67, 1.5] corresponding to relative stops
inc/dec: [-2, -1, 0, 1, 2], the zero value here is 1/3 seconds.
▪ It is important to avoid movement of the camera and subject and all
other parameters of the scene and camera should remain constant.
The only variation should be the exposure value, otherwise the
response curve and radiance map will be incorrect or unwanted
artifacts will appear in the final image
▪ When the radiance map is calculated it contains details of the
shadows and highlights, however, because it have to be
compressed again into an image it losses contrast and saturation
as observed in the default image output. By implementing tone
mapping it can improve the tones of the output image.
Test Default HDR image output
HDR output with F. Drago Adaptative tone mapping
CS 6475 - Fall 2019
Assignment #6: Video Textures
Purpose
The purpose is to create an infinitely loop video animation with very smooth transitions (or known as Video Textures). The transition of
the loop should be soft enough sot it cannot be noticed and the animation appears as it is continuous and does not end.
For this one uses a similarity metric (Diff1) which tell us the difference between each possible frame and then constructs a transition
difference matrix (Diff2). Finally using Diff2 matrix one can construct another matrix to find the biggest possible loop with the smallest
difference between the last and first frame. Notice that the first frame are the rows and the last frame are the columns, in the last matrix
(Diff3) the whiter the pixel of pair (first, last), the longest and with less difference the frames (see Diff 3 matrix).
Diff 1 Matrix:
computeSimilarityMetric
Diff 2 Matrix:
transitionDifference
Diff 3 Matrix:
diff3[i, j] = alpha * (j - i) - transition_diff[j, i]
First Frame
=12
Last Frame =121
Moving flower video texture gif: https://drive.google.com/file/d/1_yRLFKkG241TKH_RvuIVzrx3JmrYXzJL/view
CS 6475 - Fall 2019
Assignment #6: Video Textures
Key Learnings
▪ The Matrices of differences/similarity are very particular for
each video, it depends not only in the similarity of the frames
but also in the length of the videos (number of frames).
▪ Very large videos will create very large transition matrices
because each frame will correspond to a row and column.
This might be expensive computationally.
▪ Not all videos are adequate for video textures. Videos with
several things changing at different ratios will find very
difficult to find two similar frames. This kind of animations
works well where there some periodic nature in the
movement, like the case of a the flower being blown by the
wind will have the tendency to return to its static condition.
Other periodic or pseudo-periodic examples are the
movement of a candle or a waterfall.
Start frame number: 12
End frame number: 121
CS 6475 - Fall 2019
Midterm Project
Purpose
The purpose of this project was to replicate results of two published papers and get deeper understanding of the
underlying used algorithms by also comparing the results with the ones published. Another major goal is to face some
of the uncertainty that research conveys.
• Shai Avidan, Ariel Shamir. [Seam Carving for Content-Aware Image Resizing](http://www.faculty.idc.ac.il/arik/SCWeb/imret/index.html). (2007)
• Micheal Rubinstein, Ariel Shamir, Shai Avidan. [Improved Seam Carving for Video Retargeting](http://www.faculty.idc.ac.il/arik/SCWeb/vidret/index.html). (2008)
In these papers dynamic programing is used to find the minimum energy paths from top to bottom in the image. The
first paper uses backward energy and the second forward and backward energy and compares them.
(1) Seam Carving for shrinking an image (2) Seam Carving for extending an image
Input image 1
Output image 50%
horizontal reduction
Input image 2 Output image 50%
horizontal enlargement
CS 6475 - Fall 2019
Midterm Project, 2007 paper using backward energy seams
Backward Energy
First we calculate the energy of the
image by simply taking the first
derivative in x and y direction and
the sum of its absolute values is
the energy metric. This energy is
cumulative thought connected
paths from top to bottom. The
paths with less energy are
selected to delete or insert the
seams.
Note: Seams Are shown in red in
the next slides.
Comparison of the figure 5 replication from 2007 paper (50% reduction). The
replication result in (a), the original image in paper (b) and the difference between the
replica and original in (c).
(a) My image (b) Original Paper (b) Difference
CS 6475 - Fall 2019
Midterm Project, 2007 paper using backward energy metric
Comparison of the figure 8 replication from 2007 paper. 50% enlargement replication result in (a), seam carvings replication (b), and
the respective originals in (d) and (e). A 100% enlargement in (f).
CS 6475 - Fall 2019
Midterm Project, 2008 paper Forward vs Backward energy seams
Forward Energy
This energy is calculated as
if the seam was already
removed, so tries to
minimize the energy added
after the seam insertion or
removal.
Comparison of forward and backward energies from 2008 paper, figure 8 for seams deletion. (a)
Replicated forward and backward energies from left to right and at the bottom the respective
deleted seams in red. (b) Same pictures taken from the original paper.
CS 6475 - Fall 2019
Midterm Project, 2008 paper Forward vs Backward energy seams
Comparison of energies from 2008 paper, figure 9 for seams insertion. (a) Replicated
images at the top, the left one is backward energy and the right is the forward energy.
(b) Original images, let image is backward energy and right image is forward
Key Learnings
• This project allowed to apply different types of
metrics, like forward and backward energy, to
minimize the impact of removing or inserting seams
and to preserve existing features with minimal image
distortion.
• Forward energy seems to have better results
because it takes in account the local residual energy
after the seams have been removed or inserted
• To replicate exactly published papers is usually a
challenge because some details are not provided or
are not clear enough. This creates uncertainty and
one have to make some assumptions and experiment
which of those assumptions provides better results.
• One of the biggest challenges was that the author
does not show or explain in the paper that the seams
are not crossing, this might affect some type of
images, this might have caused difference between
research paper and replicated images for the
elongated car.
CS 6475 - Fall 2019
Final Project
Purpose
To apply what we have learned in the class and more and combine research with coding to produce a
novel visual artifact.
Project Name: Oil Painterly style with optimized colorization and structural tensor based texture
Description
This project presents the application of optimization techniques for
colorization and luminance quantization from a reduced color palette and
using image structural information in order to emulate brush strokes
observed in oil painting techniques
Motivation
The motivation to take photographs and make them look like a painting,
similar to Monet or Van Gogh. I imagined that If I one can control the brush
strokes one can eventually correlate the brush strokes direction with the
movement of the image gradient or video and therefore create and
interesting an effect.
CS 6475 - Fall 2019
Final Project: show case and visual pipeline
Color Seed
placement
Contours (DoG)
Variance median cut for color palette extraction
Seed Propagation and Color
Quantization
Luminance optimization
Brush: Structural tensor (integrated
and convoluted lines)
Varnish texture
input output
CS 6475 - Fall 2019
Final Project: Algorithm Pipeline
Image Input
+
Manual
Parameters*
1. Color Palette
Extraction: Median
Cut Algorithm
2. Place Color
Seeds:
(Euclidean
distance to
palette < alpha)
4. Smoothing:
OpenCv
Gaussian Blur
7. Edge Detection:
Difference of
Gaussians
Contours
6. Paint Texture composition:
Brush Texture:
Multiplication
blending
Varnish Texture:
Linear dodge
Blending
3. Colorization & Luminance Quantization:
8-connected Minimization Problem
Color
Reduction
Luminance
Quantization
5. Flow Field Extraction
Structural
Tensor
Local
Orientation
info.
calculation
Line Integral
convolution
(3rd party lib)
Image
Output
Principles of Phong Shading
CS 6475 - Fall 2019
Final Project: Image Results
Input image: Garden Flower
Output image
64 color palette, with brush stroke length of
size 30 pixel, soft varnish texture
Input image: Fo Guan Shan Temple (Taiwan)
16 color palette, with brush stroke length of size 20 pixel,
medium varnish texture
CS 6475 - Fall 2019
Final Project: Image Results 2 and Key Learnings
Input image: Yehliu geopark (Taiwan)
Output image: 32 color palette, with brush stroke length of
size 10 pixel, strong varnish texture
Key Learnings
▪ This project allowed me to implement a pipeline of algorithms with
different sources of papers. It was an interesting experience and with
more challenges that I expected initially.
▪ Some of the algorithms had to be simplified to manage the complexity
and time of the project. Also it was important to do a correct planning and
think about the performance of the algorithms so that multiple iterations,
experiments and, debugging can be run.
▪ In the color extraction stage I realized that there are multiple algorithms
and variations but median cut is the simplest one and have very good
performance. However it should be improved or use other algorithms to
have better color accuracy in the extracted palette.
▪ There are multiple color spaces that can be used for easier color and
luminance quantization. Here, I used CIE-LAB and CIE-LCh. It was
interesting to setup the colorization and luminance quantization as
minimization problem and make use of large sparse systems of equations
to solve the problem, special libraries to manage sparse systems are
required to save memory and computation.
▪ Finally, I learn about how obtain a vector fields of the image doing an
eigen-analysis and visualize it using line integral convolutions. This
surprisingly worked well as an emulation of brush strokes.
CS 6475 - Fall 2019
Thanks!
● Thanks to Prof. Irfan Essa for the lectures and the course
● To the TA’s for coordinating and helping through the course.
● In general to Georgia Tech OMSCS for the availability of the program and to have a well structured
online platform.

More Related Content

Similar to Portfolio for Computational Photography course at Georgia Tech OMSCS.

Portfolio for CS 6475 Computational Photography
Portfolio for CS 6475 Computational PhotographyPortfolio for CS 6475 Computational Photography
Portfolio for CS 6475 Computational PhotographySenthilkumar Gopal
 
Digital image processing Tool presentation
Digital image processing Tool presentationDigital image processing Tool presentation
Digital image processing Tool presentationdikshabehl5392
 
Image processing sw & hw
Image processing sw & hwImage processing sw & hw
Image processing sw & hwamalalhait
 
Computaional Photography portfolio
Computaional Photography portfolioComputaional Photography portfolio
Computaional Photography portfolioApurva Gupta
 
Best Practices To Improve Your Digital Photographs
Best Practices To Improve Your Digital PhotographsBest Practices To Improve Your Digital Photographs
Best Practices To Improve Your Digital PhotographsMichael e. Stern Photography
 
Best Practices To Improve Your Digital Photographs
Best Practices To Improve Your Digital PhotographsBest Practices To Improve Your Digital Photographs
Best Practices To Improve Your Digital Photographsguest694f6a5d
 
SFM Lesson 3
SFM Lesson 3SFM Lesson 3
SFM Lesson 3TonyC445
 
Two marks with answers ME6501 CAD
Two marks with answers ME6501 CADTwo marks with answers ME6501 CAD
Two marks with answers ME6501 CADPriscilla CPG
 
Photohsop movie 06
Photohsop movie 06Photohsop movie 06
Photohsop movie 06Ngoc Dep
 
Computer Vision panoramas
Computer Vision  panoramasComputer Vision  panoramas
Computer Vision panoramasWael Badawy
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3stevemcauley
 
Image enhancement lecture
Image enhancement lectureImage enhancement lecture
Image enhancement lectureISRAR HUSSAIN
 
DAY2_SUPERHERO.pptx
DAY2_SUPERHERO.pptxDAY2_SUPERHERO.pptx
DAY2_SUPERHERO.pptxPoddarWorks
 
Photometric calibration
Photometric calibrationPhotometric calibration
Photometric calibrationAli A Jalil
 
Geophotography: From Shooting to Post-processing: Making the Most of your Cam...
Geophotography: From Shooting to Post-processing: Making the Most of your Cam...Geophotography: From Shooting to Post-processing: Making the Most of your Cam...
Geophotography: From Shooting to Post-processing: Making the Most of your Cam...SERC at Carleton College
 

Similar to Portfolio for Computational Photography course at Georgia Tech OMSCS. (20)

Portfolio for CS 6475 Computational Photography
Portfolio for CS 6475 Computational PhotographyPortfolio for CS 6475 Computational Photography
Portfolio for CS 6475 Computational Photography
 
Vray lighting
Vray lightingVray lighting
Vray lighting
 
Digital image processing Tool presentation
Digital image processing Tool presentationDigital image processing Tool presentation
Digital image processing Tool presentation
 
Image processing sw & hw
Image processing sw & hwImage processing sw & hw
Image processing sw & hw
 
Computaional Photography portfolio
Computaional Photography portfolioComputaional Photography portfolio
Computaional Photography portfolio
 
Best Practices To Improve Your Digital Photographs
Best Practices To Improve Your Digital PhotographsBest Practices To Improve Your Digital Photographs
Best Practices To Improve Your Digital Photographs
 
Best Practices To Improve Your Digital Photographs
Best Practices To Improve Your Digital PhotographsBest Practices To Improve Your Digital Photographs
Best Practices To Improve Your Digital Photographs
 
Best Practices
Best PracticesBest Practices
Best Practices
 
SFM Lesson 3
SFM Lesson 3SFM Lesson 3
SFM Lesson 3
 
Two marks with answers ME6501 CAD
Two marks with answers ME6501 CADTwo marks with answers ME6501 CAD
Two marks with answers ME6501 CAD
 
Lm342080283
Lm342080283Lm342080283
Lm342080283
 
Photohsop movie 06
Photohsop movie 06Photohsop movie 06
Photohsop movie 06
 
Computer Vision panoramas
Computer Vision  panoramasComputer Vision  panoramas
Computer Vision panoramas
 
Cinematic lighting .pdf
Cinematic lighting .pdfCinematic lighting .pdf
Cinematic lighting .pdf
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3
 
Image enhancement lecture
Image enhancement lectureImage enhancement lecture
Image enhancement lecture
 
DAY2_SUPERHERO.pptx
DAY2_SUPERHERO.pptxDAY2_SUPERHERO.pptx
DAY2_SUPERHERO.pptx
 
Photometric calibration
Photometric calibrationPhotometric calibration
Photometric calibration
 
Image inpainting
Image inpaintingImage inpainting
Image inpainting
 
Geophotography: From Shooting to Post-processing: Making the Most of your Cam...
Geophotography: From Shooting to Post-processing: Making the Most of your Cam...Geophotography: From Shooting to Post-processing: Making the Most of your Cam...
Geophotography: From Shooting to Post-processing: Making the Most of your Cam...
 

Recently uploaded

What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?Watsoo Telematics
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutionsmonugehlot87
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 

Recently uploaded (20)

What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutions
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 

Portfolio for Computational Photography course at Georgia Tech OMSCS.

  • 1. CS 6475 - Fall 2019 Computational Photography Final Portfolio Richard Marin Benavides CS6475 - Fall 2019
  • 2. CS 6475 - Fall 2019 Assignment #1: Epsilon Photography Purpose:​ The purpose of Epsilon Photography is to capture multiple images but modifying only one parameter by a small amount. This parameter can be the focal point, the picture exposure, view point, aperture, etc. For this project, I choose to modify a “small” variations of color hue in the input photographs: Input 1 Input 2 Input 3 Input 4 Input 5 Input 6 Output= Final Artifact Description: Each different source image is illuminated with programmable LED Light where the color hue can be adjusted. The image 1 starts with yellow hue; for image 2, the hue is increased with an small amount making it close to orange; for image 3 it is increased closer to a red hue; and so on. Blending these epsilon hues across the light spectrum would let me to obtain a Final Artifact as if only one image were taken using only white light
  • 3. CS 6475 - Fall 2019 Assignment #1: Epsilon Photography Key Learnings: ▪ The Final artifact demonstrates the epsilon (color hue) by combining a subsample of the colors hues of the visible spectrum, one hue per source image, in order to create a composed final artifact with a different color hue from any of the input images. ▪ Even a small amount of hue color subsample from the wheel of colors let me to reproduce a the white light by the combination of all colors. ▪ Planning ahead and understanding the concept of how light works before hand helped to produce a very nice and expected output when using epsilon photography. ▪ For epsilon photography is really important to work in manual mode and have full control of the camera settings and external factors like light conditions. The color combination produce white
  • 4. CS 6475 - Fall 2019 Assignment #2: Camera Obscura this window use cardboards to block the light, this points to the scene All light should be blocked in the room, I used here a blanked in one of the windows Purpose: The purpose of this project was to build and document the construction of a Camera Obscura inside a room. By building this camera one can learn of modern cameras since it can serve as a basic model where similar principles of image formation applies. The Room should be completely dark where the light enters through a pin-hole and the outside image is projected in the room wall that is opposite to the hole. Room setup: Previous window use multiple aperture selector Only one aperture is selected at the time
  • 5. CS 6475 - Fall 2019 Assignment #2: Camera Obscura, Room Wall Projections Captures Image 1: The Outside scene are some trees and plants Image 2. Pinhole diameter: 1.5cm Camera Settings: Aperture: f/3.5, Shutter Speed: 30s, ISO: 800 Image 3. Above and beyond: double aperture slits of dimensions 1cm by 4cm and separated by 2cm creates interference Camera Settings: Aperture: f/3.5, Shutter Speed: 20s, ISO: 560 Key Learnings: ▪ The Pinhole aperture determines how much light reach to the sensor at a given moment, the smaller the aperture more time is required to acquire enough light (exposure time). ▪ The light is very difficult to cover, even a small leakage can change the final image. ▪ The aperture size affects significantly the depth of field, with bigger apertures one can create more blurriness to whatever is not in focus. ▪ The field of view does not depend on the aperture size but depends of the distance between the sensor and aperture (typically the focal point in a camera and where the sensor is located), also it depends on the size of the sensor, so with the same lens, cameras with bigger sensors have bigger FOV. ▪ Multiple holes open create interference between images by combining rays that comes from the same point but are projected at different regions of the screen (see above and beyond picture).
  • 6. CS 6475 - Fall 2019 Assignment #3: Blending Purpose This assignment idea is to implement the pyramid blending pipeline in order to combine multiple images into a seamlessly blended image. Gaussian pyramids are created by consecutive (levels) gaussian blurring and scaling down. The Laplacian pyramid is created by scaling up the levels of the Gaussian Pyramid and saving the difference between each level. The pyramids are created for the two images to blend. A Gaussian pyramid of the mask is used to alpha blend each of the Laplacian levels of the of the input images. Image 1 Image 2 Final Result
  • 7. CS 6475 - Fall 2019 Assignment #3: Blending with 5 level Pyramids Key Learnings ▪ Doing a blending by decomposing the image in multiple levels, allows to preserve information of images across different frequencies. ▪ As the level in the pyramid is increased the high level details are filter and low level details (low frequencies) are the visible ones. ▪ The final artifact is composed by summing up the frequency information of each level. ▪ Using a mask a simple formula like alpha blending allows to select what part is desired of each image Image 1 Image 2 Mask Gaussian Pyramid Image 1 Laplacian Pyramid Image 1 Gaussian Pyramid Mask Gaussian Pyramid Image 1 Laplacian Pyramid Image 1 Alpha Blend each level Result: Adding each level
  • 8. CS 6475 - Fall 2019 Assignment #4: Panoramas Purpose The purpose of this assignment is to align and stitch together a overlapping sets of images into a panorama. The panorama are created automatically by aligning, warping and blending images created by rotating the camera from left to right and maintaining single point (axis rotation) of rotation. Setup of Camera mounted in tripod Single point rotation and graded angle control 5° rot Final Panorama Result Image 1 Image 2 Image 3 5° rot
  • 9. CS 6475 - Fall 2019 Assignment #4: Panoramas Key Learnings ▪ Implementing panoramas in a seamlessly way requires to find features as anchor points between images so they can be warped and aligned correctly. ▪ A good panorama constructed by this method a single point rotation of the camera. The pictures are planar projections of those rotated views. ▪ As experimented in this project for the Above and Beyond section, blending the images using a gaussian step function produces very good results. ▪ For each two consecutive images, they have to be aligned by finding similar features and the perspective warped so the images can be blended seamlessly Gaussian Step function Gaussian Step Mask White Masked Image 1 Black Masked Image 2 Two different consecutive images aligned and stitched Blending of two consecutive images
  • 10. CS 6475 - Fall 2019 Assignment #5: HDR Purpose The purpose of this assignment was to combine multiple images at different exposures into a single output image with higher dynamic range compared to any of the inputs. All the inputs are used to computed the response curve of the camera to the scene. This response curve is used to compute the radiance map which contains details of both darker and brighter regions of the scene. The radiance map then can be tone mapped to improved the colors and contrast in the output image Image 1: 1/10 s Image 2: 1/6 s Image 3: 1/3 s Image 4: 0.67 s Image 5: 1.5 s Result HDR Image with tone mapping
  • 11. CS 6475 - Fall 2019 Assignment #5: HDR Key Learnings ▪ To create a good HDR image one should try first to expose “correctly” the main subject of the image. From the first exposure, a series of increased and decreased exposures images should be taken. When each stop increase or decrease, it doubles or halves the amount light irradiated to the sensor by changing the time the shutter is open. Just for illustration, the set of exposures in seconds: [1/10, 1/6, 1/3, 0.67, 1.5] corresponding to relative stops inc/dec: [-2, -1, 0, 1, 2], the zero value here is 1/3 seconds. ▪ It is important to avoid movement of the camera and subject and all other parameters of the scene and camera should remain constant. The only variation should be the exposure value, otherwise the response curve and radiance map will be incorrect or unwanted artifacts will appear in the final image ▪ When the radiance map is calculated it contains details of the shadows and highlights, however, because it have to be compressed again into an image it losses contrast and saturation as observed in the default image output. By implementing tone mapping it can improve the tones of the output image. Test Default HDR image output HDR output with F. Drago Adaptative tone mapping
  • 12. CS 6475 - Fall 2019 Assignment #6: Video Textures Purpose The purpose is to create an infinitely loop video animation with very smooth transitions (or known as Video Textures). The transition of the loop should be soft enough sot it cannot be noticed and the animation appears as it is continuous and does not end. For this one uses a similarity metric (Diff1) which tell us the difference between each possible frame and then constructs a transition difference matrix (Diff2). Finally using Diff2 matrix one can construct another matrix to find the biggest possible loop with the smallest difference between the last and first frame. Notice that the first frame are the rows and the last frame are the columns, in the last matrix (Diff3) the whiter the pixel of pair (first, last), the longest and with less difference the frames (see Diff 3 matrix). Diff 1 Matrix: computeSimilarityMetric Diff 2 Matrix: transitionDifference Diff 3 Matrix: diff3[i, j] = alpha * (j - i) - transition_diff[j, i] First Frame =12 Last Frame =121 Moving flower video texture gif: https://drive.google.com/file/d/1_yRLFKkG241TKH_RvuIVzrx3JmrYXzJL/view
  • 13. CS 6475 - Fall 2019 Assignment #6: Video Textures Key Learnings ▪ The Matrices of differences/similarity are very particular for each video, it depends not only in the similarity of the frames but also in the length of the videos (number of frames). ▪ Very large videos will create very large transition matrices because each frame will correspond to a row and column. This might be expensive computationally. ▪ Not all videos are adequate for video textures. Videos with several things changing at different ratios will find very difficult to find two similar frames. This kind of animations works well where there some periodic nature in the movement, like the case of a the flower being blown by the wind will have the tendency to return to its static condition. Other periodic or pseudo-periodic examples are the movement of a candle or a waterfall. Start frame number: 12 End frame number: 121
  • 14. CS 6475 - Fall 2019 Midterm Project Purpose The purpose of this project was to replicate results of two published papers and get deeper understanding of the underlying used algorithms by also comparing the results with the ones published. Another major goal is to face some of the uncertainty that research conveys. • Shai Avidan, Ariel Shamir. [Seam Carving for Content-Aware Image Resizing](http://www.faculty.idc.ac.il/arik/SCWeb/imret/index.html). (2007) • Micheal Rubinstein, Ariel Shamir, Shai Avidan. [Improved Seam Carving for Video Retargeting](http://www.faculty.idc.ac.il/arik/SCWeb/vidret/index.html). (2008) In these papers dynamic programing is used to find the minimum energy paths from top to bottom in the image. The first paper uses backward energy and the second forward and backward energy and compares them. (1) Seam Carving for shrinking an image (2) Seam Carving for extending an image Input image 1 Output image 50% horizontal reduction Input image 2 Output image 50% horizontal enlargement
  • 15. CS 6475 - Fall 2019 Midterm Project, 2007 paper using backward energy seams Backward Energy First we calculate the energy of the image by simply taking the first derivative in x and y direction and the sum of its absolute values is the energy metric. This energy is cumulative thought connected paths from top to bottom. The paths with less energy are selected to delete or insert the seams. Note: Seams Are shown in red in the next slides. Comparison of the figure 5 replication from 2007 paper (50% reduction). The replication result in (a), the original image in paper (b) and the difference between the replica and original in (c). (a) My image (b) Original Paper (b) Difference
  • 16. CS 6475 - Fall 2019 Midterm Project, 2007 paper using backward energy metric Comparison of the figure 8 replication from 2007 paper. 50% enlargement replication result in (a), seam carvings replication (b), and the respective originals in (d) and (e). A 100% enlargement in (f).
  • 17. CS 6475 - Fall 2019 Midterm Project, 2008 paper Forward vs Backward energy seams Forward Energy This energy is calculated as if the seam was already removed, so tries to minimize the energy added after the seam insertion or removal. Comparison of forward and backward energies from 2008 paper, figure 8 for seams deletion. (a) Replicated forward and backward energies from left to right and at the bottom the respective deleted seams in red. (b) Same pictures taken from the original paper.
  • 18. CS 6475 - Fall 2019 Midterm Project, 2008 paper Forward vs Backward energy seams Comparison of energies from 2008 paper, figure 9 for seams insertion. (a) Replicated images at the top, the left one is backward energy and the right is the forward energy. (b) Original images, let image is backward energy and right image is forward Key Learnings • This project allowed to apply different types of metrics, like forward and backward energy, to minimize the impact of removing or inserting seams and to preserve existing features with minimal image distortion. • Forward energy seems to have better results because it takes in account the local residual energy after the seams have been removed or inserted • To replicate exactly published papers is usually a challenge because some details are not provided or are not clear enough. This creates uncertainty and one have to make some assumptions and experiment which of those assumptions provides better results. • One of the biggest challenges was that the author does not show or explain in the paper that the seams are not crossing, this might affect some type of images, this might have caused difference between research paper and replicated images for the elongated car.
  • 19. CS 6475 - Fall 2019 Final Project Purpose To apply what we have learned in the class and more and combine research with coding to produce a novel visual artifact. Project Name: Oil Painterly style with optimized colorization and structural tensor based texture Description This project presents the application of optimization techniques for colorization and luminance quantization from a reduced color palette and using image structural information in order to emulate brush strokes observed in oil painting techniques Motivation The motivation to take photographs and make them look like a painting, similar to Monet or Van Gogh. I imagined that If I one can control the brush strokes one can eventually correlate the brush strokes direction with the movement of the image gradient or video and therefore create and interesting an effect.
  • 20. CS 6475 - Fall 2019 Final Project: show case and visual pipeline Color Seed placement Contours (DoG) Variance median cut for color palette extraction Seed Propagation and Color Quantization Luminance optimization Brush: Structural tensor (integrated and convoluted lines) Varnish texture input output
  • 21. CS 6475 - Fall 2019 Final Project: Algorithm Pipeline Image Input + Manual Parameters* 1. Color Palette Extraction: Median Cut Algorithm 2. Place Color Seeds: (Euclidean distance to palette < alpha) 4. Smoothing: OpenCv Gaussian Blur 7. Edge Detection: Difference of Gaussians Contours 6. Paint Texture composition: Brush Texture: Multiplication blending Varnish Texture: Linear dodge Blending 3. Colorization & Luminance Quantization: 8-connected Minimization Problem Color Reduction Luminance Quantization 5. Flow Field Extraction Structural Tensor Local Orientation info. calculation Line Integral convolution (3rd party lib) Image Output Principles of Phong Shading
  • 22. CS 6475 - Fall 2019 Final Project: Image Results Input image: Garden Flower Output image 64 color palette, with brush stroke length of size 30 pixel, soft varnish texture Input image: Fo Guan Shan Temple (Taiwan) 16 color palette, with brush stroke length of size 20 pixel, medium varnish texture
  • 23. CS 6475 - Fall 2019 Final Project: Image Results 2 and Key Learnings Input image: Yehliu geopark (Taiwan) Output image: 32 color palette, with brush stroke length of size 10 pixel, strong varnish texture Key Learnings ▪ This project allowed me to implement a pipeline of algorithms with different sources of papers. It was an interesting experience and with more challenges that I expected initially. ▪ Some of the algorithms had to be simplified to manage the complexity and time of the project. Also it was important to do a correct planning and think about the performance of the algorithms so that multiple iterations, experiments and, debugging can be run. ▪ In the color extraction stage I realized that there are multiple algorithms and variations but median cut is the simplest one and have very good performance. However it should be improved or use other algorithms to have better color accuracy in the extracted palette. ▪ There are multiple color spaces that can be used for easier color and luminance quantization. Here, I used CIE-LAB and CIE-LCh. It was interesting to setup the colorization and luminance quantization as minimization problem and make use of large sparse systems of equations to solve the problem, special libraries to manage sparse systems are required to save memory and computation. ▪ Finally, I learn about how obtain a vector fields of the image doing an eigen-analysis and visualize it using line integral convolutions. This surprisingly worked well as an emulation of brush strokes.
  • 24. CS 6475 - Fall 2019 Thanks! ● Thanks to Prof. Irfan Essa for the lectures and the course ● To the TA’s for coordinating and helping through the course. ● In general to Georgia Tech OMSCS for the availability of the program and to have a well structured online platform.