Created a faceted search for photos by attributes such as place, date, or tags. Combined that with a 2D layout by similarity of those attributes or by visual appearance.
Technical challenges. Develop a 2D spring layout algorithm that groups similar photos together. Combine with faceted search that shows thumbnails only of matching photos. Provide a timeline with histograms and color-coding to allow for easy selection of a date range.
Technologies. Java Swing.
Adapted an approach invented at FXPAL for video summaries to create photo collages by filling a Voronoi diagram around a region-of-interest in each photo. Developed smoothing algorithms that produced more aesthetically pleasing boundaries. Repurposed the approach for faces detected in photos.
Technical challenges. Created a web site for outside users to upload photos and to create collages from them. Implemented a pixel-perfect realization of the web site design. Developed user interface components for uploading photos and for adjusting collages. Contributed to making the Java UI work inside an ActiveX control that was deployed to Fujifilm kiosks at Walmart. Worked around contiguous memory limitations in ActiveX controls.
Technologies. HTML, CSS, Java, JavaScript, ActiveX.
Designed and co-developed a photo organizer app that lets the user quickly scroll through thumbnails of ten thousands of photos. Teamed up to create an algorithm that can detect event boundaries by time stamps and location data. Made use of face recognition to group photos by depicted people.
Technical challenges. Designed and implemented the overall framework of the app, the IO components, and the photo display. Coordinated with team members on organizing photos by date or by automatically detected events. Sped up loading of photos by calling a native from Java and by caching thumbnail images in groups of 100 in Zip files. Incorporated a closed-source face recognition C++ library and created a UI for just showing faces and for labeling photos by the people depicted in them.
Technologies. Java Swing, Java Native Interface (JNI), C++.