Menu Homepage About Me Projects
...

William Oberholtzer

Contact at wioberholtzer@ursinus.edu

Projects

Here is a collection of some of my work thus far. More details can be found here

haha

Plant Cell Segmentation

This project utilizes the Disjoint Set data structure and watershed segmentation to locate and match pixels of a high brightness threshold. The cells are located and the center of the cell is represented by a green dot. The unionfind implementation can be found in unionfindeff.py, which utilizes a weights system to allow for the shortening of the roots, which ultimately results in greater efficiency when performing the union of two elements. The watershed segmentation implementation can be found at cells.py

haha

Traveling Salesperson Art

Both Depth First Search and Minimum Spanning Trees are implemented in this project to create art. First, an image is taken and is converted into a map of dots, where dots represent dark areas of image. The dots are collected and stored in an array by relative location in image. A Minimum Spanning Tree is generated from this array, and then A Depth First Search is performed on the generated tree. Lastly, the improved connections are further optimized by removing all crossings that may generate after the Depth First Search. Full Project can be found here

haha

Character Animation

This project uses Forward And Backward Reaching Inverse Kinematics (FABRIK) to animate a Homer Simpson mesh. A data structure is first created to efficently store joint positions, names, and "leaf" status (whether or not the joint has multiple children). Then, FABRIK is applied to move joint "chains", which are a group of leaf joints attached to each other. Once this is done, the skeleton outline of the Homer Simpson mesh will move accordingly. To move the mesh vertices along with the bones, transformation matrices are created, which are translated from "world" coordinates to "bone" coordinates, with bones holding the position, among other information, of two connected joints. Then, assuming FABRIK is applied, the matrices of the mesh vertices are translated back to "bone" coordinates from "world" coordinates with respect to the nearest bone for a given vertex. More details can be found here