This lecture's given you a flavor of some advanced image processing operations, but really only just touched on some of these techniques. So if they've piqued your interested, then I suggest you go off and do some additional reading and experiment with some of the code that's provided in the toolbox.
The first technique that we looked at was mathematical morphology, but this time with more complex structuring elements. So we talked about how we can use morphological operations to detect lines with a particular slope within an image. We can actually create quite complex structuring elements.
We also discussed an example where the structuring element contained a circle and we used that to reconstruct some missing parts of an object; a tomato fruit, which we know is essentially circular.
We looked very briefly at the hit and miss transform. We can use that for operations like skeletonization and finding the intersection points of a number of line segments.
We introduced the Hough Transform, a well-known technique of finding linear features within an image. In order to use the Hough Transform, we introduced an alternative parameterization of lines.
It's not often known as the Polar Form of a Line. Each line is described in terms of the perimeter Theta and Rho. Each point that lays on an edge of an image, votes for a large number of lines. Those votes are tallied in an accumulator array. The lines that receive the largest number of votes then are dominant lines in the scene; they are supported by a large number of edge pixels and such lines have been overlaid graphically on the image of the church here.
Finally we talked about finding corresponding points. It's very easy for you and me to find the coordinate of this balcony corner in two quite different pictures of that same scene, but it's not so easy for a computer algorithm to do that.
We also touched on the problem that we can't just rely on the greyscale intensity of the pixel to find it in the other scene.
In order to solve this problem we introduced the notion of a Corner Detector, which says something about the similarity of a region of an image, to adjacent regions of the image. We can boil this down to a very useful two by two matrix called the Structure Tensor. And that tells us a lot about the local shape of the intensity surface of the image at this particular point. We can use the Eigenvalues of this matrix to determine whether this region of the image is flat or constant, whether it contains and edge or whether it contains a peak.
The structure tensor is very easily computed from the horizontal and vertical gradient images smoothed with a Gaussian Kernel. These are all techniques that we've met previously. Two common corner detector algorithms then use slightly different techniques to find those points where both Eigenvalues are large.
Finally, we talked about feature matching. Given that I had a set of corner points in one image, a set of corner points in another image, I take a region of pixels around each of those interest points and look at the similarity of those image regions to determine the correspondence between points in the two images.
Let’s recap the important points from the topics we have covered in advanced image processing.
This content assumes an understanding of high school level mathematics; for example, trigonometry, algebra, calculus, physics (optics) and experience with MATLAB command line and programming, for example workspace, variables, arrays, types, functions and classes.