Q. How do I
find a research project?
A. If you are ready to take on the challenge of research for your Part II or Diploma Computer Science Project, then you are at the right place.
Q. Why should
I do a research project?
A. The joy of invention awaits you. There are some practical benefits as well. Both universities and employers value innovation. If you intend to pursue graduate studies then engaging in research as an undergraduate will certainly work to your advantage. Consider the standard advice on applying for graduate studies: "If you want to go to graduate school, obviously good grades and good test scores are desirable. However, research or professional experience and good recommendation letters are an equally, if not more, important part of your overall package. Even if your grades are lower than the average of those accepted to the graduate school you're considering, your research experience and good recommendation letters may boost you into the acceptance pile."
Q. How do research
projects turn out?
A. What you get from a research project depends on what you are willing put in. The past research projects that I have supervised have lead some notable successes. Jim Minter demonstrated that simplifying numerical calculations in a well known scattered data interpolation technique need not result in a loss of accuracy. As an undergraduate, Stephen Rymill created a 3D animation system to simulate a flock of birds, he was then accepted to the Ph.D. program at the Computer Laboratory and he is now researching crowd simulation. Chris Gibbs developed an evolutionary algorithm and user interface for artistic image rendering and he is now a co-author of a paper on stylized rendering for multiresolution image representation which was presented at the Human Vision and Electronic Imaging Conference at the Electronic Imaging Symposium in San Jose, California. Rahul Vohra created contrast brushes, a novel user interface for interactive contrast enhancement, and his project results will be described by us in an upcoming paper. His project has already helped him to secure a place on the Ph.D. program at the Computer Laboratory, not to mention a summer job offer from a company that makes visual effects tools for the film industry. The visual effects company has recently indicated to me that they may be interested in collaborating on undergraduate research projects.
A Past Research Project: Artistic Image Rendering by Chris Gibbs
Q. Is a research
project is right for me?
A. A research project is a serious undertaking for both of us. A research project demands skill and dedication. To undertake a research project, you should have strong ability or relevant experience for what you are proposing to do. Typical research projects call for proficient skills in at least one of these key areas: computer programming, algorithm and system design, user interface design, pure and applied mathematics, statistics and probability. Also, to undertake a research project, you should have a strong reason for doing what you are proposing to do. A research project is likely to earn you a good grade, but if all you are really looking for is a good grade then you should consider looking elsewhere.
Q. How can I
get started on a research project?
A. Take a look at this web page and see what captures your imagination. These project descriptions are just brief introductions. Of course, there are more possibilities than what is listed here. You may wish to check out some of my publications.
My task is to provide you with an open research question, to explain the rationale and background behind it, and to supply you with the scientific literature on the subject. To get you started, I will propose original techniques for a possible solution that can be realistically implemented and evaluated in the short span of a Cambridge academic year. Incorporating your ideas and preferences, we will together come up with the project proposal. Fun, feasible, and fascinating. In a nutshell, this is my idea of what makes a fine project proposal.
If you already have a specific idea for a research project in mind, I would be happy to discuss it with you. I can supervise research projects in these areas of computer science;
- Image Processing
- Computer Graphics
- User Interface Design
- Pattern Recognition
- Computer Vision
- Computational Geometry
- Complex Dynamic Systems
- Artificial Life
- Information Retrieval
- Stochastic and Nonlinear Optimization
- Probabilistic Analysis of Algorithms
- High-Level Programming Languages
Q. What is your
A. At the Computer Laboratory, I am a member of the Rainbow Group where I am researching computer graphics and image processing techniques for artistic expression. Nonphotorealistic image rendering is a new frontier of computer graphics which combines the styles of the visual arts with models of visual perception. There are many computational methods for producing artistic effects, ranging from cartoons to impressionist paintings, from wood sculpture to watercolors. Yet many more beautiful algorithms are still waiting to be discovered. To learn more, visit Stylized Depiction in Computer Graphics.
Q. How can I
A. Let's talk about our ideas. Feel free to email me at Mark@Eyemaginary.com. Don't forget to include your phone number so that I can get back to you. Please be aware that I will only be supervising research oriented projects this year (2005).
Q.& A. Good luck & have fun!
Interactively evolving artistic styles:
How can a computer help a graphic designer to create the visual style of a picture? How should multiple styles be combined within a single rendition? How can a wide range of novel artistic image rendering styles be designed without requiring the designer to become a programmer? To be regarded as a true artistic technique, computer-assisted painterly rendering needs to offer the capacity for original expression - a personal rendering style. Designers may not be satisfied with styles that come prepackaged and ready to use, but rather require the tools to create their own. An automated algorithm should carry out the intricate mechanics of the image transformation while the designer should provide aesthetic evaluation as feedback to guide the refinement of the visual style.
Genetic programming can be applied to create new rendering styles. Interactive evolution by aesthetic selection provides a viable user interface. This "I-know-it-when-I-see-it" method of stochastic optimization employs the designer's artistic judgment to evaluate solutions proposed by the system. The algorithm randomly mutates the numerical parameters and the mathematical operators of the symbolic expressions that define the style. The resulting variations are then presented to the designer who selects which ones should survive to produce new possibilities for further improvement. The process continues until the designer is satisfied with the outcome. The challenge of interactive evolution is to converge on the designer's intentions by continuously offering a variety of relevant alternatives. This is a creative feedback loop, as the rendition can affect the vision that shapes it. To see how such an interface works, try evolving biomorphs, which were originally used by Richard Dawkins to explore how biological evolution can give rise to the boundless diversity of nature.
The best starting point is still provided by Karl Sims' original work on interactive evolution by aesthetic selection. For a comprehensive overview of the current state of the art, take a look at this excellent survey of techniques and applications for interactive evolution. An online course about nature-inspired design may also prove helpful. Since most of the previous work has been focused on creating abstract digital art, I suggest that you focus on the design artistic rendering styles. By using concepts from mathematical algebra to build the image synthesis operators as well as models from computer vision to detect the image features, it should be possible to generate some highly unique and compelling artistic effects. Interactivity requires real-time performance so the implementation needs to be carried out using a compiled language such as C or C++.
A Few Artistic Image Rendering Styles Created Using My Algorithms
Evaluating Painterly Rendering:
When is it appropriate to use automated painterly image rendering? Can nonphotorealistic image rendering improve the perceived quality of highly compressed images? Photographic images take space to store, time to transmit, and bandwidth to display interactively. So online games, multimedia presentations, and image databases rely on either compressed images or low resolution images. However, when the image size is reduced drastically, the image may suffer from blocking, blurring, or discoloring. These mechanical compression artifacts can become distracting to the viewer. Take a look at this ACM Crossroads article for an introduction to classical compression methods.
I have developed a multiresolution image representation that allows for progressive image compression while presenting a painterly rendition of an image. Would the user be more willing to accept a highly compressed image if its appearance clearly resembled a painting or rough sketch? When compressed images serve to convey an idea, illustrate a narrative, elicit an emotion, or stimulate a discussion, effective communication demands an expressive representation rather than merely an accurate reproduction. Subjective testing is required to establish the use of artistic rendering techniques as a legitimate means of controlling the degradation inherent in lossy image compression. It needs to be demonstrated whether applying a painterly surface effect to the rendering of a compressed image will actually shift the viewers' expectations from a photograph to a painting, and how this will affect the perceived quality of the image. Such research would make a significant contribution to establishing the practical need for artistic rendering techniques as a way of representing images.
Now you can design and carry out an experiment, involving your choice of task and application, to see what kind of images users prefer and why. You need to provide the viewer with an appropriate context. The images could be situated in a slide show presentation that is augmented with sound and text (an illustrated story, a product brochure, travel itinerary, etc.) Ideally, you would want to replace the photographs in an existing professionally-made presentation, either on the web or in print (nonphotorealistic rendering can be used to represent low resolution images on high resolution printers). The viewers would be randomly shown either a photorealistic or a nonphotorealistic presentation consisting of highly compressed images. They would then be questioned on the effectiveness of the presentation so that impact of the rendering style can be assessed. The viewers would also be asked to rate their impressions of "quality" rather than "accuracy" of images compressed using photorealistic or nonphotorealistic rendering. By taking on this project, you would gain valuable practical experience in the design and analysis of a user study, a crucial research method for evaluating human computer interaction.
Low Resolution Image Compressed Image Painted Image
Enhancing image contrast:
How can image contrast be adjusted to balance emphasis with distortion? How can a user interface integrate region selection and contrast enhancement? How can an automated algorithm locally alter image contrast while preserving the global tonal balance of the entire image? Contrast brings the visual structure of information into focus. Differences in tone signal the distinctions between objects. By attracting attention, contrast conveys emphasis. In human vision, contrast tells the eye where to go next. As an accent or an overstatement, visual artists use contrast to engage the viewer's interest. Thus, contrast enhancement has emerged as a fundamental tool of image processing, finding application in remote sensing, medical imaging, and scientific visualization. It is a standard preprocessing step in printing digital photographs or performing object recognition. For an introduction, take a look at this tutorial on image enhancement.
Contrast adjustment consists of a one-to-one mapping of input colors to output colors. For example, the sigmoid function can be effectively configured to serve as the color mapping function. In global contrast enhancement, the same mapping is applied to every pixel in the image. For local contrast enhancement, the mapping adapts to suit the visual properties of the local neighborhood of each pixel. The slope of the mapping function determines the change in contrast while its displacement indicates the shift in tone. Raising the contrast stretches the image histogram and makes image details appear more prominent, while lowering contrast compresses the image histogram and makes image details appear more subdued. I have recently developed a histogram warping technique for interactive contrast adjustment and it would be interesting to see how it could be improved and extended. If you are interested in user interface design, we could devise a more effective tool for helping the user to locally adjusting contrast. If you are interested in algorithm design, we could investigate optimizing the parameters that define the mapping function with respect to a suitable measure of image contrast. If you are a proficient programmer, you could attempt to create a plug-in for Photoshop or GIMP. Since fast numerical calculation is essential, this project is best implemented using C, C++, or MatLab.
Contrast Enhancement by Histogram Warping
Segmenting images into regions:
How to make image segmentation robust? When does an image appear to be ambiguous? How can the evidence for recognizing a particular image region be assessed? A basic challenge of computer vision is to recognize the visual structure of a picture. Analyzing the image in terms of regions rather than pixels makes it easier to understand what the picture is about. Image segmentation is a data clustering process which assigns each pixel to an image region consisting of pixels with similar luminance, color, or texture. While many algorithms have been proposed for image segmentation, there is a need for better techniques to evaluate how well the segmented regions actually reflect what is present in the image. Before relying on image segmentation to drive object recognition, it would be useful to measure how much confidence can be placed in the result of the image segmentation process.
The mean shift algorithm is a statistical procedure used in robust analysis of visual data. It is a remarkably simple and effective algorithm for color image segmentation. Consider each pixel to be an observation in a 3D color space. Start with a window centered at the observed data point. The size of the window determines how sensitive the segmentation is to image details. Compute the mean of the data points inside the window and translate the window to center it at the mean. At each step the window moves from a region of lower density towards a region of higher density. The process is repeated until it converges to a local maximum of the probability density function implied by the observations. Hence, an image region consists of all pixels that converge to the same color. There is available a C++ implementation of this algorithm as well as a user interface for experimenting with image segmentation. What the algorithm does not tell you is the degree of uncertainty inherent in the result. I have an idea for a statistical method to measure the significance of the evidence for assigning a pixel to one image region as opposed to another. The aim of the project is to evaluate the reliability of image segmentation.
Past Project Suggestions
Website traffic statistics were reset in February 2014.
Copyright © 2014 Mark Grundland. All rights reserved.