This is a Portfolio for Computational Photography projects. This was part of a course in the Master of Science at Georgia Tech. Computational Photography is a mix of art, math and computation that uses advances in optics, sensors, and microprocessor technology advances.
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.