Join Mark Niemann-Ross for an in-depth discussion in this video Introducing the problem of image analysis, part of Code Clinic: R.
(futuristic sounds) - Hello, and welcome to Code Clinic. My name is Mark Niemann-Ross and I'm the Content Manager for the Developer segment at Lynda.com. Code Clinic is a course where I introduce a problem to a collection of Lynda.com authors. In turn, each author uses a computer programming language of choice to produce a unique solution. You can learn several things from Code Clinic. Different approaches to solving a problem, the pros and cons of different languages, and some tips and tricks to incorporate into your own coding practices.
This time, we're introducing a problem using image analysis. In one sense, this is simply data analysis. Images are really nothing more than specialized and well-defined sets of data. An image consists of pixels. Pixels consist of data representing the color of the pixel, and in some cases, the pixel's transparency. Pixels are arranged in rows and columns. When assembled correctly, they represent an image. The difficulty in dealing with images is that our eyes and brains are very good at recognizing patterns.
Patterns can be a bit more difficult to recognize with a computer program. Think about Captcha security devices. Those puzzles you sometimes see when logging into a website. The Captcha asks what letters and numbers are in the image. Information obscured by random lines, sometimes overlapping transparent blocks of color, all of those intersecting shapes make it difficult for a computer program to separate the background noise from the actual data. Another example is the tests to determine color blindness.
Letters and numbers are hidden in a circle filled with different colored dots. If you're color blind, you will not be able to see the numbers. For a computer program, this can be incredibly difficult, as it requires detecting an edge, as well as recognizing the overall shape. It's difficult, even for the most advanced programmer. In this problem, we're trying to solve a common problem for many photographers: plagiarism. A photographer will take a picture and post it on the Internet only to discover someone has stolen their image and placed a subset of that image on their website.
For example, here's an image, and then a cropped version of that image. It would be extremely handy if there was a program searching the Internet for cropped versions of an original image, so that a photographer could protect their rights. In fact, Google Image Search will do just that. But we're curious how it works, and what the required code might look like. So here's the challenge. Given two images, determine if one image is a subset of the other image. We'll assume they're both JPEG files, but the resolution is the same as well as the bit depth.
We've provided a set of images. The program should return a table showing which images are cropped versions of other images. Perhaps you'll want to pause and create a solution of your own. How would you solve the problem? In the next videos, I'll show you how I answered this challenge.
Mark introduces challenges and then provides an overview of his solutions in R. Challenges include topics such as statistical analysis, searching directories for images, and accessing peripheral devices.
Skill Level Intermediate
Q: R Studio tells me that it can't find files I expect to be available. Where can I find them?
A: Use the setwd() command to set the working directory to match the folder you're working in.
Q: I am unable to access the Lake Pend Oreille data from outside the U.S.
A: A static copy of this data is provided here for lynda.com members outside of the U.S.