-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
281 lines (229 loc) · 12.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Andrew Adams</title>
<style type="text/css">
body {
font-family: georgia;
}
td {
line-height: 140%;
vertical-align: top;
border: none;
}
h3 {
font-variant:small-caps;
}
h1 {
font-variant:small-caps;
}
a {
color:222288;
text-decoration:underline;
}
a:hover {
text-decoration:underline;
}
table {
background-color:white;
}
</style>
</head>
<body bgcolor=dddddd>
<center>
<br><br>
<table style="border: 30px solid white; width: 80%; max-width: 850px">
<tr>
<td colspan=2 align=center>
<h1>Andrew Adams</h1>
</td>
</tr><tr>
<td align=center>
<img src=Me_smaller.jpg style="max-width: 100%">
</td>
<td align=left>
Principal Scientist<br>
Adobe Research<br>
andrew.b.adams AT gmail.com<br>
<br>
<a href="http://github.com/abadams">GitHub</a>
<br>
<br>
<a href="https://scholar.google.com/citations?hl=en&user=B--edBUAAAAJ&view_op=list_works&sortby=pubdate">Google Scholar</a>
</td>
</tr>
<tr><td colspan=2>
<br><br>
<p>
<h3>Publications</h3>
<p>
<table style="border:none; border-spacing:10px;">
<tr><td><br><img src="paper_thumbs/halide_autodiff.png"></td><td><br>
<a href="https://people.csail.mit.edu/tzumao/gradient_halide/">Differentiable Programming for Image Processing and Deep Learning in Halide</a><br>
Tzu-Mao Li, Michaël Gharbi, Andrew Adams, Frédo Durand, Jonathan Ragan-Kelley<br>
<em>ACM SIGGRAPH 2018<em><br>
<br>
</td></tr>
<tr><td><br><img src="paper_thumbs/tc.png"></td><td><br>
<a href="https://arxiv.org/pdf/1802.04730.pdf">Tensor comprehensions: Framework-agnostic high-performance machine learning abstractions</a><br>
Nicolas Vasilache, Oleksandr Zinenko, Theodoros Theodoridis, Priya Goyal, Zachary DeVito, William S Moses, Sven Verdoolaege, Andrew Adams, Albert Cohen<br>
<br>
</td></tr>
<tr><td><br><img src="paper_thumbs/par.png"></td><td><br>
<a href="par.pdf">Parallel Associative Reductions in Halide</a><br>
Patricia Suriana, Andrew Adams, Shoaib Kamil<br>
<em>CGO 2017<em><br>
<br>
</td></tr>
<tr><td><br><img src="paper_thumbs/hdrplus.jpg"></td><td><br>
<a href="http://hdrplusdata.org/">Burst photography for high dynamic range and low-light imaging on mobile cameras</a><br>
Samuel W Hasinoff, Dillon Sharlet, Ryan Geiss, Andrew Adams, Jonathan T Barron, Florian Kainz, Jiawen Chen, Marc Levoy<br>
<em>ACM SIGGRAPH Asia 2016<em><br>
<br>
</td></tr>
<tr><td><br><img src="paper_thumbs/bgu.jpg"></td><td><br>
<a href="bgu.pdf">Bilateral guided upsampling</a><br>
Jiawen Chen, Andrew Adams, Neil Wadhwa, Samuel W. Hasinoff<br>
<em>ACM SIGGRAPH Asia 2016<em><br>
<br>
</td></tr>
<tr><td><br><img src="paper_thumbs/agx.png"></td><td><br>
<a href="http://graphics.cs.cmu.edu/projects/halidesched/">Automatically scheduling halide image processing pipelines</a><br>
Ravi Teja Mullapudi, Andrew Adams, Dillon Sharlet, Jonathan Ragan-Kelley, Kayvon Fatahalian<br>
<em>ACM SIGGRAPH 2016<em><br>
<br>
</td></tr>
<script type="text/javascript">
function defocus_start() {document.getElementById("defocus_thumb").src="paper_thumbs/defocus.gif"}
function defocus_stop() {document.getElementById("defocus_thumb").src="paper_thumbs/defocus_still.jpg"}
</script>
<tr onmouseout="defocus_stop()" onmouseover="defocus_start()" ><td><br><img src="paper_thumbs/defocus_still.jpg" id="defocus_thumb"></td><td><br>
<a href="BarronCVPR2015.pdf">Fast Bilateral-Space Stereo for Synthetic Defocus</a><br>
Jonathan T. Barron, Andrew Adams, YiChang Shih, Carlos Hernández<br>
<em>CVPR 2015 (Oral Presentation)<em><br>
<a href="BarronCVPR2015_supp.pdf">Supplemental Material</a><br>
<br>
</td></tr>
<tr><td><br><img src="paper_thumbs/sculpt.jpg"></td><td><br>
<u>Sculpting by Numbers</u><br>
Alec Rivers, Andrew Adams, Frédo Durand<br>
<em>ACM SIGGRAPH Asia 2012<em><br>
<br>
</td></tr>
<tr><td><br><img src="paper_thumbs/agx.png"></td><td><br>
<a href="http://people.csail.mit.edu/jrk/halide12">Decoupling Algorithms from Schedules for Easy Optimization of Image Processing Pipelines</a><br>
Jonathan Ragan-Kelley, Andrew Adams, Sylvain Paris, Marc Levoy,<br>
Saman Amarasinghe, Frédo Durand<br>
<em>ACM SIGGRAPH 2012</em><br>
<br>
<b>Also see:</b><br>
<a href="halide-pldi13.pdf">Halide: A Language and Compiler for Optimizing Parallelism,
Locality, and Recomputation in Image Processing Pipelines</a><br>
Jonathan Ragan-Kelley, Connelly Barnes, Andrew Adams, Sylvain Paris, Frédo Durand, Saman Amarasinghe<br>
<em>PLDI 2013</em><br>
<br>
<b>These two papers were combined, updated, and reprinted in CACM:</b><br>
<a href="halide_cacm.pdf"> Halide: decoupling algorithms from schedules for high-performance image processing</a><br>
Jonathan Ragan-Kelley, Andrew Adams, Dillon Sharlet, Connelly Barnes, Sylvain Paris, Marc Levoy, Saman Amarasinghe, and Frédo Durand<br>
<em>CACM December 2017</em><br>
</td></tr>
<tr><td><br><img src="paper_thumbs/frankencamera.jpg"></td><td><br>
<a href=http://graphics.stanford.edu/papers/fcam/>The Frankencamera: An Experimental Platform for Computational Photography</a><br>
Andrew Adams, Eino-Ville Talvala, Sung Hee Park, David E. Jacobs,<br>
Boris Ajdin, Natasha Gelfand, Jennifer Dolson, Daniel Vaquero,<br>
Jongmin Baek, Marius Tico, Hendrik P. A. Lensch, Wojciech Matusik,<br>
Kari Pulli, Mark Horowitz, Marc Levoy<br>
<em>ACM SIGGRAPH 2010</em><br>
<em>Reprinted in CACM November 2012</em><br>
<br>
<b>Also see:</b><br>
<u>Multi-exposure Imaging on Mobile Devices</u><br>
Natasha Gelfand, Andrew Adams, Sung Hee Park, Kari Pulli<br>
<em>ACM Multimedia 2010</em><br>
</td></tr>
<tr><td><br><img src="paper_thumbs/permutohedral.png"></td><td><br>
<a href=http://graphics.stanford.edu/papers/permutohedral/>Fast High-Dimensional Filtering Using the Permutohedral Lattice</a><br>
(See my <a href="thesis.pdf">dissertation</a> for more detail)<br>
Andrew Adams, Jongmin Baek, Abe Davis<br>
<em>Eurographics 2010</em><br>
<em>Runner-up for <b>Best Paper</b></em><br>
<br>
<b>Also see:</b><br>
<a href=http://www.springerlink.com/content/4568551k26203013/>
Lattice-Based High-Dimensional Gaussian Filtering and the Permutohedral Lattice</a><br>
Jongmin Baek, Andrew Adams, Jennifer Dolson<br>
<em>Journal of Mathematical Imaging and Vision 2012</em>
<!-- TODO: journal issue number -->
</td></tr>
<tr><td><br><img src="paper_thumbs/gkdtree.jpg"></td><td><br>
<a href=http://graphics.stanford.edu/papers/gkdtrees/>Gaussian KD-Trees for
Fast High-Dimensional Filtering</a><br>
(See my <a href="thesis.pdf">dissertation</a> for more detail and algorithmic improvements)<br>
Andrew Adams, Natasha Gelfand, Jennifer Dolson, Marc Levoy<br>
<em>ACM SIGGRAPH 2009</em>
</td></tr>
<tr><td><br><img src="paper_thumbs/vfa.jpg"></td><td><br>
<a href=http://graphics.stanford.edu/papers/viewfinderalignment/>Viewfinder Alignment</a><br>
Andrew Adams, Natasha Gelfand, Kari Pulli<br>
<em>Eurographics 2008</em>
</td></tr>
<tr><td><br><img src="paper_thumbs/glcfa.jpg"></td><td><br>
<a href=http://graphics.stanford.edu/papers/glcfa/>General Linear Cameras with Finite Aperture</a><br>
Andrew Adams, Marc Levoy<br>
<em>EGSR 2007</em>
</td></tr>
<tr><td><br><img src="paper_thumbs/glare_removal.jpg"></td><td><br>
<a href=http://graphics.stanford.edu/papers/glare_removal/>Veiling Glare in High Dynamic Range Imaging</a><br>
Eino-Ville Talvala, Andrew Adams, Mark Horowitz, Marc Levoy<br>
<em>ACM SIGGRAPH 2007</em>
</td></tr>
<tr><td><br><img src="paper_thumbs/microscopy.jpg"></td><td><br>
<a href=http://graphics.stanford.edu/papers/lfmicroscope/>Light Field Microscopy</a><br>
Marc Levoy, Ren Ng, Andrew Adams, Matthew Footer, Mark Horowitz<br>
<em>ACM SIGGRAPH 2006</em>
</td></tr>
<tr><td><br><img src="paper_thumbs/camera_array.jpg"></td><td><br>
<a href="http://graphics.stanford.edu/papers/CameraArray/">
High Performance Imaging Using Large Camera Arrays</a><br>
Bennett Wilburn, Neel Joshi, Vaibhav Vaish, Eino-Ville Talvala, <br>
Emilio Antunez, Adam Barth, Andrew Adams, Mark Horowitz, Marc Levoy<br>
<em>ACM SIGGRAPH 2005</em>
</td></tr>
</table>
<br><br>
<p>
<h3>Code and Data</h3>
<p>
<table style="border:none; border-spacing:10px;">
<tr><td><br><img src="paper_thumbs/agx.png" alt="AgX is the pseudo-chemical name given to silver halide agents used in film photography"></td><td><br>
<a href="http://halide-lang.org/">Halide</a> <br>
Writing fast image processing pipelines is hard, because you need to simultaneously optimize for parallelism and locality (memory bandwidth). This usually wrecks the modularity, portability, and readability of your code, because it involves fusing all your pipeline stages into one architecture-specific monolithic mess. Trying alternative optimizations is then very painful, because it requires rearranging huge chunks of code and then fixing the bugs you inevitably introduced.
<p>
Halide makes it easier to explore possible optimizations by separating the specification of the algorithm from the specification of the "schedule", which defines what gets computed when and where it is stored. Halide is described in <a href="http://people.csail.mit.edu/jrk/halide12">this SIGGRAPH 2012 paper</a>. The compiler is open source, and can be found <a href="http://halide-lang.org">here</a>. We welcome contributions and bug reports.
</td></tr>
<tr><td><br><img src="paper_thumbs/ImageStack.png"></td><td><br>
<a href="http://code.google.com/p/imagestack">ImageStack</a> <br>
ImageStack is a command-line stack calculator for images that I have been slowly building up. It's a swiss-army knife for computational photography, with resampling, image arithmetic, alignment, gradient-domain operators, a wide variety of efficient linear and non-linear filters, wavelet transforms, Fourier transforms, deconvolution operators, and even some light field operators. Thanks to the help of the students in <a href="http://www.stanford.edu/class/cs448f">CS448f</a> it also includes implementations of some recent SIGGRAPH papers. It's great in scripts, and you can also link to it as a library. Recently it has begun to include some metaprogramming tricks backported from Halide, so some routines are quite fast.
</td></tr>
<tr><td><br><img src="paper_thumbs/n900.jpg"></td><td><br>
<a href="http://fcam.garage.maemo.org/">The FCam camera control API for the Nokia N900</a> <br>
We think you should be able to program your camera. This API turns your Nokia N900 into a programmable camera. It replaces key kernel drivers and disables the existing user-space daemons that mess with the sensor settings behind your back. This lets you easily program your N900 to take exactly the shots you want at the maximum possible frame rate. We've used this API with success teaching grad students <a href="http://graphics.stanford.edu/courses/cs448a-10/">computational photography</a>, and it's the same API we use on the <a href="http://graphics.stanford.edu/projects/camera-2.0">Frankencamera</a>. The architecture behind this API is described in full in our <a href="http://graphics.stanford.edu/papers/fcam">SIGGRAPH 2010 paper</a>.
</td></tr>
<tr><td><br><img src="paper_thumbs/bilateral.jpg"></td><td><br>
<u>Fast High-Dimensional Bilateral Filtering</u><br>
If you're looking for CPU or CUDA implementations of the Gaussian KD-Tree or the permutohedral lattice you can find them at their paper webpages <a href="http://graphics.stanford.edu/papers/gkdtrees/">here</a> and <a href="http://graphics.stanford.edu/papers/permutohedral/">here</a> respectively. The CPU implementations have also been integrated into <a href="http://code.google.com/p/imagestack">ImageStack</a>, which you may find more convenient. My <a href="thesis.pdf">dissertation</a> contains simple annotated versions of the code as appendices.
</td><tr>
<tr><td><br><img src="paper_thumbs/aperture.jpg"></td><td><br>
<a href="http://lightfield.stanford.edu/lfs.html">The Stanford Light Field Archive</a><br>
This is our collection of light fields acquired with camera array, gantry, and light field microscope. Feel free to use any of the light fields on this page in your research (with credit). Also includes my <a href="http://lightfield.stanford.edu/aperture.html">light field viewing applet</a>. To capture your own similar light fields all you need is a camera and some <a href="http://lightfield.stanford.edu/images/lego_self_portrait_pinhole.jpg">lego</a>.
</td></tr>
<tr><td><br><img src="paper_thumbs/cs178.png"></td><td><br>
<a href="http://graphics.stanford.edu/courses/cs178-10/applets/">Photography Applets</a><br>
Nora Willett, Katie Dektar, <a href="http://graphics.stanford.edu/~levoy">Marc Levoy</a> and I made a range of applets to help teach concepts in photography for the digital photography course <a href="http://cs178.stanford.edu">CS178</a>. They explore topics in optics, color, and image processing.<p>
If you like those, you may also enjoy my <a href="lenstoy.swf">Toy optical bench</a> applet. Drag the components in the upper left into the middle to place them. Shift-drag objects to rotate and scale them. Alt-drag objects to change their aspect ratio (this is how you change the power of a lens).
</td></tr>
</table>
<br><br>
</td></tr></table>
</body>
</html>