''CS 559 Term Project''\n\nVoxel coloring is a technique used to create a 3D scene reconstruction from a fairly sparse set of images. Perhaps the most useful aspect of this technique is the fact that it can be used to create a photorealistic scene reconstruction without computing image correspondences. For my CS 559 term project, I implemented and tested the 3D voxel coloring algorithm as described [[here|http://www.cs.washington.edu/homes/seitz/papers/ijcv99.pdf]]\n\nVoxel coloring works by descretizing the scene into small volume elements, called voxels. Rather than computing correspondences between images and using triangulation to reconstruct scene geometry, the voxel coloring technique traverses the scene voxel by voxel, reprojecting each one back onto the image set and computing a measure of color variance for the pixels onto which it projects. If the variance between those pixels is low, the voxel is considered color invariant and is colored accordingly. Otherwise, the voxel remains uncolored. After a sweep of the entire scene volume, all voxels corresponding to points in the scene should be colored, while those not corresponding to scene points remain uncolored.\n\nFor more information on my implementation of the algorithm and on some of my testing procedures, please see this [[report|downloads/voxel.pdf]] or download the Matlab source code [ [[TAR.GZ|downloads/voxel_src.tar.gz]] | [[ZIP|downloads/voxel_src.zip]] ].\n\nI tested my algorithm using images of a Big Bird doll, available along with calibration data here [ [[TAR.GZ|downloads/bigbird.tar.gz]] | [[ZIP|downloads/bigbird.zip]] ]. To simplify calculating external camera parameters for each image, I first took photographs of a calibration target from twenty marked locations. Then I put the Big Bird doll on top of the calibration target and photographed it from the same twenty locations. To simplify reconstruction, I manually segmented Big Bird from the background in each of the twenty images. Below are an example from the image set and the corresponding calibration target image, as well as some images of the reconstructions from my algorithm.\n\n| [img[big bird|images/bigbird.png]] | [img[calibration target|images/calib_target.png]] |\n|bgcolor(#fe8): An image from the Big Bird image set |bgcolor(#fe8): The corresponding calibration target image |\n| [img[voxel reconstruction|images/bb-reconstr1.png]] | [img[voxel reconstruction|images/bb-reconstr2.png]] |\n|>|bgcolor(#fe8): Images of a reconstruction of Big Bird from near the camera's vewipoint and from a novel viewpoint |
I come from Lititz, Pennsylvania, USA, which is the home of America's first commercial pretzel bakery. Lititz is also in the heart of Amish country. Though I am not Amish myself (as you might have guessed from the fact that I have my own web page), I still try to be a pretty simple guy. I like good beer and good books. When I'm not working, reading, or drinking (which isn't often), I like to pretend I know something about photography. If you want, you can check out some of my [[photographs|http://web.engr.oregonstate.edu/~hess/photos/]].\n\nI also serve as the treasurer for the Oregon State University chapter of [[Engineers Without Borders|http://groups.engr.orst.edu/ewb/]] and as the VP for collective bargaining of the [[Coalition of Graduate Employees|http://cge6069.org]], AFT Local 6069, which is the union representing graduate student employees at OSU.
This site is powered by [[TiddlyWiki|http://www.tiddlywiki.com/]].
[img[linux|images/linuxpenguin.png]]\nCS 411 is the second undergraduate Operating Systems class at OSU. Since the Winter of 2006, I have been working with with [[Paul Paulson|http://web.engr.oregonstate.edu/~paulson/]] to integrate Linux into the CS 411 curriculum as an instructional tool. By using Linux, we hope to provide students with practical experience working with and programming in a real production operating system and, in addition, to introduce them to the type of collaborative effort that goes into working on a large, open-source project such as Linux.\n\nIn Spring of 2006, we offered the first Linux-based CS 411 course with a series of projects built around the Linux I/O scheduler. Student response to this course was overwhelmingly positive, due largely to the fact that the students' experience programming in Linux is directly applicable to real-world operating system development. Correspondingly, students felt knowledge gained in the Linux-based CS 411 course was more likely to be of future use to them.\n\nThanks in part to funding from Google, development of the Linux-based CS 411 course is ongoing. Some of the major goals of the CS 411 project include finding ways to further "open-source education" and developing a series of Linux-based programming projects for use in future offerings of the course and for possible publication.\n\n!!Linux kernel-based operating systems projects\n''Project 1: System Call''\n*[[Project description|downloads/cs411/proj01.pdf]]\n*[[Grading criteria|downloads/cs411/P1Criteria.pdf]]\n''Project 2: Process Scheduler''\n*[[Project description|downloads/cs411/proj02.pdf]]\n*[[Skeleton code and virtual machine|downloads/cs411/Project02.zip]]\n*[[Grading Criteria|downloads/cs411/P2Criteria.pdf]]\n''Project 3: Memory Allocator''\n*[[Project description|downloads/cs411/proj03.pdf]]\n*[[Grading Criteria|downloads/cs411/P3Criteria.pdf]]\n''Project 4: I/O Scheduler''\n*[[Project description|downloads/cs411/proj04.pdf]]\n*[[Grading Criteria|downloads/cs411/P4Criteria.pdf]]\n''Project 5: RAM Disk Driver''\n*[[Project description|downloads/cs411/proj05.pdf]]\n*[[Grading Criteria|downloads/cs411/P5Criteria.pdf]]
* Course Project: a report on [[DNA computing|downloads/dna.pdf]]
*A short [[animation|downloads/jump.mpg]] created with Maya\n*Term Project: [[Football Play Visualization]]
*Class Project: [[Fun With Intelligent Scissors]]\n*Term Project: [[Particle Filter Object Tracking]]
*Presentation: [[Modeling and Rendering Architecture from Photographs|downloads/architecture.pdf]]\n**Based on a [[paper|http://www.debevec.org/Research/debevec-siggraph96-paper.pdf]] by aul Debevec, Camillo Taylor, and Jitendra Malik\n*Term Project: [[3D Voxel Coloring]]\n**Based on a [[paper|http://www.cs.washington.edu/homes/seitz/papers/ijcv99.pdf]] by Steven Seitz and Charles Dyer
Here are some of the more interesting and useful pieces of code I've worked on.\n*[[SIFT Feature Detector]] -- A C implementation of a SIFT image feature detector.\n*[[Particle Filter Object Tracking]] -- A C implementation of a single object particle filter tracker.\n*[[3D Voxel Coloring]] -- A Matlab implementation of the 3D voxel coloring object reconstruction algorithm.
[img[email|images/email.png]]
Here is a list of some of the courses I've taken in which I've done interesting work.\n*[[CS 559 -- 3D Vision]] -- Winter 2005\n*[[CS 550 -- Intro to Computer Graphics]] -- Fall 2005\n*[[CS 556 -- Computer Vision]] -- Winter 2006\n*[[CS 521 -- Computability]] -- Spring 2008
[[Welcome]]\n[[Research]]\n[[Code]]\n[[Teaching]]\n[[Coursework]]\n
''CS 550 Term Project''\n\nPart of my research here at OSU involves tracking football players in video sequences. In the end, I hope to be able to write algorithms that will classify plays from video, but at this point, I am a long way from that goal. In the meantime, it is nice to be able to visualize the results of my tracking algorithms, to see if they yield results that resemble the play from the video. For my CS 550 term project, I wrote a program that does exactly that.\n\nYou can see a screenshot of my program below. If you want to know a little bit more about my implementation, you can read the [[report|downloads/playviz.pdf]], or you can download the source code [ [[TAR.GZ|downloads/playviz.tar.gz]] | [[ZIP|downloads/playviz.zip]] ]. Note that you'll need to install ~OpenGL and GLUT to run the program.\n\n| [img[play visualization screenshot|images/playviz.png]] |\n|bgcolor(#fe8): A screenshot of my football play visualization program |
''CS 556 Class Project''\n\nIntelligent Scissors (see this [[paper|http://web.engr.oregonstate.edu/~enm/publications/GMIP_98/seg_scissors.pdf]]) is an image segmentation tool that has been incorporated into most popular imaging programs, like GIMP and Photoshop. The tool allows a user to "trace" around an object of interest to segment it from the rest of the image in which it appears.\n\nIntelligent scissors works by assigning a boundary cost to every pixel, based on the image's gradient magnitude and Laplacian zero-crossings. Least cost paths are computed between all pixels and a seed pixel that is specified by the user with a mouse click. By selecting a second seed pixel, the user defines a portion of the boundary between the object and the background which is the least cost path between the two seeds. Many seeds can be specified until the object is completely segmented from the background.\n\nI wrote a simple version of Intelligent Scissors for my Computer Vision class. Below is an example of its use in which two works of art are combined to form a masterpiece.\n\n| [img[original|images/mortensen.png]] | [img[mask|images/mortensen.mask.png]] | [img[masked|images/mortensen_head.png]] |\n|bgcolor(#fe8): Original Image: Eric Mortensen, creator of Intelligent Scissors |bgcolor(#fe8): Mask image from Intelligent Scissors segmentation |bgcolor(#fe8): Original image with mask applied |\n|>|>|>| [img[a masterpiece|images/masterpiece.png]] |\n|>|>|>|bgcolor(#fe8): Masked image composed with a work of art to form a masterpiece |\n
[img[me|images/self.png]]\n\n[[Welcome]]\n[[About Me]]\n[[Research]]\n[[Coursework]]\n[[Teaching]]\n[[Publications|publications/]]\n[[Code]]\n[[Photos|http://web.engr.oregonstate.edu/~hess/photos/]]\n[[Contact]]\n\n[[About This Site]]
Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)\n\n<<option txtUserName>>\n<<option chkSaveBackups>> SaveBackups\n<<option chkAutoSave>> AutoSave\n<<option chkRegExpSearch>> RegExpSearch\n<<option chkCaseSensitiveSearch>> CaseSensitiveSearch\n<<option chkAnimate>> EnableAnimations\n\nSee AdvancedOptions
<div class='header'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>
''CS 556 Term Project''\n\nObject tracking is a tricky problem. A general, all-purpose object tracking algorithm must deal with difficulties like camera motion, erratic object motion, cluttered backgrounds, and other moving objects. Such hurdles render general image processing techniques an inadequate solution to the object tracking problem.\n\nParticle filtering is a Monte Carlo sampling approach to Bayesian filtering. It has many uses but has become the state of the art in object tracking. Conceptually, a particle filtering algorithm maintains a probability distribution over the state of the system it is monitoring, in this case, the state -- location, scale, etc. -- of the object being tracked. In most cases, non-linearity and non-Gaussianity in the object's motion and likelihood models yields an intractable filtering distribution. Particle filtering overcomes this intractability by representing the distribution as a set of weighted samples, or particles. Each particle represents a possible instantiation of the state of the system. In other words, each particle describes one possible location of the object being tracked. The set of particles contains more weight at locations where the object being tracked is more likely to be. We can thus determine the most probable state of the object by finding the location in the particle filtering distribution with the highest weight.\n\nYou can download the source code for my C implementation of a particle filter object tracker here: [ [[TAR.GZ|downloads/track.tar.gz]] | [[ZIP|downloads/track.zip]] ]. This is a simple single-object tracker that uses a color histogram-based observation model and a second-order autoregressive dynamical model. More information on the implementation can be found in this [[presentation|downloads/track.pdf]].\n\nNote that you must have installed the [[OpenCV Library|http://opencvlibrary.sourceforge.net]] and the [[GNU Scientific Library (GSL)|http://www.gnu.org/software/gsl/]] to use the code.\n\nHere are some mpeg video results of running my code on various tracking domains:\n*[[Football (good)|downloads/football_track.mpg]]\n*[[Football (good, all particles)|downloads/football_track_all.mpg]]\n*[[Hockey|downloads/hockey_track.mpg]]\n*[[Soccer|downloads/soccer_track.mpg]]\n*[[Football (failure)|downloads/football_track_bad.mpg]]
*[[David Crandall|http://www.cs.cornell.edu/~crandall/]]\n*[[Frank Dellaert|http://www-static.cc.gatech.edu/~dellaert/]]\n*[[Pedro Felzenszwalb|http://people.cs.uchicago.edu/~pff/]]\n*[[Alan Fern|http://web.engr.oregonstate.edu/~afern/]]\n*[[Stephen Intille|http://web.media.mit.edu/~intille/]]\n*[[David Lowe|http://www.cs.ubc.ca/spider/lowe/home.html]]\n*[[Kenji Okuma|http://www.cs.ubc.ca/~okumak/research.html]]\n
I am currently working on the OSU [[Digital Scout Project|http://eecs.oregonstate.edu/football]]. The short-term goal of the DSP is to develop a system to robustly annotate and classify football plays from video. In the long term, we hope to expand our system so that it can recommend football strategy based on a team's strengths and exploitable weaknesses as detected in video. Work on this project touches on a lot of interesting topics in computer vision and AI. Check out the project's webpage for more details.\n\nMy current personal interests are in the areas of Computer Vision and Artificial Intelligence and include visual multi-object tracking, object recognition, and the classification of human action from video. Check out this list of [[People With Related Interests]]. You can also head to my [[Publications|publications/]] page for more specific details about some of the work I've done.\n\nI am also interested in open-source development and Linux kernel development in particular, as well as computer science education, and [[open-source education|http://osel.oregonstate.edu/]]
''Latest Version: 1.1.1_20090108''\nNote: New version (1.1.1) makes a few API changes. See the [[Changelog|downloads/sift/ChangeLog]].\n\nThe Scale Invariant Feature Transform (SIFT) is a method by David Lowe to detect feature points in images. These can be matched between images to perform tasks such as object detection and recognition, or to compute geometrical transformations between images. See this [[paper|http://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf]] for more details.\n\nMy C implementation of SIFT is available here for both Linux [ [[TAR.GZ|downloads/sift/sift-latest.tar.gz]] ] and Windows (VC++.NET) [ [[ZIP|downloads/sift/sift-latest_win.zip]] ]. Also included is a set of functions to compute image transforms from feature matches using RANSAC. In addition to features computed from my own code, these functions also work with image features in files from both David Lowe's [[SIFT detector|http://www.cs.ubc.ca/~lowe/keypoints/]] and the Oxford VGG's [[affine covariant feature detectors|http://www.robots.ox.ac.uk/~vgg/research/affine/]].\n\nNote that the SIFT code relies on the [[OpenCV Library|http://opencvlibrary.sourceforge.net]] (known working version is 1.1.0). The RANSAC functions use the Gnu Scientific Library (GSL) [ [[Linux|http://www.gnu.org/software/gsl/]] | [[Windows|http://gnuwin32.sourceforge.net/packages/gsl.htm]] ] (known working version is 1.11) (//note that to run the Windows code in debug mode in Visual Studio requires downloading the GSL sources and compiling and installing debug versions of the GSL static libraries and .dll's//). Some of the Linux functions also use the [[GDK/GTK+2|http://www.gtk.org/]] (known working version is 2.14.4).\n\nBelow are some images from my code that demonstrate the detection and matching of SIFT features and the use of RANSAC to compute a transformation using those matches.\n\n| [img[images/sift_features1.png]] | [img[images/sift_features2.png]] |\n|>|bgcolor(#fe8): SIFT features detected in two images |\n| [img[images/sift_matches.png]] | [img[images/sift_xform.png]] |\n|bgcolor(#fe8): Features matched between the two images |bgcolor(#fe8): Transformation computed from matched features using RANSAC |
[[ School of EECS | http://eecs.oregonstate.edu/ ]] @ [[ Oregon State University | http://oregonstate.edu ]]
Rob Hess
/***\n!Colors Used\n*@@bgcolor(#8cf): #8cf - Background blue@@\n*@@bgcolor(#18f): #18f - Top blue@@\n*@@bgcolor(#04b): #04b - Mid blue@@\n*@@bgcolor(#014):color(#fff): #014 - Bottom blue@@\n*@@bgcolor(#ffc): #ffc - Bright yellow@@\n*@@bgcolor(#fe8): #fe8 - Highlight yellow@@\n*@@bgcolor(#db4): #db4 - Background yellow@@\n*@@bgcolor(#841): #841 - Border yellow@@\n*@@bgcolor(#703):color(#fff): #703 - Title red@@\n*@@bgcolor(#866): #866 - Subtitle grey@@\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #f80;\n}\n\na:hover{\n background: #f80;\n color: #000;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #000;\n background: #f80;\n}\n\n.button {\n color: #000;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #000;\n background: #ffc;\n border-color: #fe8;\n}\n\n.button:active {\n color: #fff;\n background: #b60;\n border: 1px solid #840;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #000;\n}\n\n.headerShadow {\n color: #000;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #000;\n}\n\n.headerForeground {\n color: #fff;\n}\n\n.headerForeground a {\n font-weight: normal;\n text-decoration: none;\n color: #f80;\n}\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected{\n color: #000;\n background: #ffc;\n border-left: 1px solid #fe8;\n border-top: 1px solid #fe8;\n border-right: 1px solid #fe8;\n}\n\n.tabUnselected {\n color: #fff;\n background: #b60;\n}\n\n.tabContents {\n color: #000;\n background: #ffc;\n border: 1px solid #fe8;\n}\n\n.tabContents .button {\n border: 0;}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid #000;\n}\n\n#sidebarOptions .sliderPanel {\n background: #ffc;\n border: 1px solid #fe8;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #f80;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #000;\n background: #f80;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #000;\n background: #fff;\n}\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border: 1px solid #840;\n background: #888;\n color: #000;\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #000;\n background: #fff;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #b60;\n border: 1px solid #fe8;\n}\n\n.popup hr {\n color: #000;\n background: #000;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #000;\n}\n\n.popup li a, .popup li a:visited {\n color: #eee;\n border: none;\n}\n\n.popup li a:hover {\n background: #ffc;\n color: #000;\n border: none;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: #888;\n}\n\n.title {\n color: #000;\n}\n\n.subtitle {\n color: #888;\n}\n\n.toolbar {\n color: #000;\n}\n\n.tagging, .tagged {\n border: 1px solid #eee;\n background-color: #eee;\n}\n\n.selected .tagging, .selected .tagged {\n background-color: #ddd;\n border: 1px solid #bbb;\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: #014;\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #8cf;\n border: 0;\n}\n\n.sparktick {\n background: #014;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.cascade {\n background: transparent;\n color: #aaa;\n border: 1px solid #aaa;\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid #db4;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #333;\n}\n\n.viewer th, thead td {\n background: #db4;\n border: 1px solid #666;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #666;\n}\n\n.viewer pre {\n border: 1px solid #fe8;\n background: #ffc;\n}\n\n.viewer code {\n color: #703;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #666;\n color: #666;\n}\n\n.highlight, .marked {\n background: #fe8;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #04b;\n}\n\n.editor textarea {\n border: 1px solid #04b;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n/*}}}*/
/***\n!Sections in this Tiddler:\n*Generic rules\n**Links styles\n**Link Exceptions\n*Header\n*Main menu\n*Sidebar\n**Sidebar options\n**Sidebar tabs\n*Message area\n*Popup\n*Tabs\n*Tiddler display\n**Viewer\n**Editor\n*Misc. rules\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n position: relative;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n/*}}}*/\n/***\n''General Link Styles'' /%-----------------------------------------------------------------------------%/\n***/\n/*{{{*/\n.externalLink {\n text-decoration: underline;\n}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n/*}}}*/\n/***\n''Exceptions to common link styles'' /%------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n#mainMenu .externalLink{\n text-decoration: none;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 4.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 4.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n/*}}}*/\n/***\n!Main menu /%==================================================%/\n***/\n/*{{{*/\n#mainMenu {\n position: absolute;\n left: 0;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.1em;\n}\n\n/*}}}*/\n/***\n!Sidebar rules /%==================================================%/\n***/\n/*{{{*/\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n/*}}}*/\n/***\n''Sidebar options'' /%----------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n/*}}}*/\n/***\n''Sidebar tabs'' /%-------------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n/*}}}*/\n/***\n!Message area /%==================================================%/\n***/\n/*{{{*/\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\nmargin: 0.5em;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n/*}}}*/\n/***\n!Popup /%==================================================%/\n***/\n/*{{{*/\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n/*}}}*/\n/***\n!Tabs /%==================================================%/\n***/\n/*{{{*/\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n/*}}}*/\n/***\n!Tiddler display rules /%==================================================%/\n***/\n/*{{{*/\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n/* I'm not a fan of how button looks in tiddlers... */\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n/*}}}*/\n/***\n!Misc rules /%==================================================%/\n***/\n/*{{{*/\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
<<timeline>>
I have been a teaching assistant or instructor for these courses:\n*[[CS 411]] -- ''Operating Systems II'' -- Spring 2006 and Fall 2006\n*CS 391 -- ''Social and Ethical Issues in Comp. Sci.'' -- Summer 2005 (Full Instructor)\n*CS 372 -- ''Intro to Computer Networks'' -- Spring 2005 and Winter 2006\n*CS 312 -- ''Linux System Administration'' -- Fall 2005\n*CS 162 -- ''Intro to Computer Science II ''-- Winter 2005\n*CS 151 -- ''Intro to C Programming'' -- Fall 2004
<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink'></div>\n<div class='title' macro='view title'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
Hi. I am a ~PhD student in Computer Science at Oregon State studying Artificial Intelligence and Computer Vision under [[Alan Fern|http://web.engr.oregonstate.edu/~afern/ ]]. I'm also working with [[Paul Paulson|http://web.engr.orst.edu/~paulson]] to introduce Linux into the CS curriculum at OSU in the [[CS 411]] project. To see more about my work, check out my [[Research]], [[Teaching]], and [[Coursework]]. Or, maybe you'd rather just know a little [[About Me]].\n\nI've started to post some new [[photos|http://web.engr.oregonstate.edu/~hess/photos/]], including ones from my trip to Rio last October. Check them out.\n\nI also just found out that I'm going to have another paper published in CVPR '09. This one's on a discriminative training method for multi-object particle filter object tracking. Check out my [[publications page|publications/]] to find it.