Steve on Image Processing

June 8th, 2009

Spatial transformations chapter in new edition of Digital Image Processing Using MATLAB

In January 2006, the first month of this blog, I wrote the following:

"Section 5.11 of Digital Image Processing Using MATLAB covers spatial transformations. I'm interested in expanding this material to a full chapter. I'd like to use this blog to explore these topics and get your feedback about them."

Well that's what happened. I wrote a whole series of posts about spatial transformations, and you provided lots of good feedback.

Now the 2nd edition of Digital Image Processing Using MATLAB is finally available! And it has a brand new chapter called Geometric Transformations and Image Registration. This chapter was my biggest contribution to the new edition.

Here are the chapter contents:

Chapter 6: Geometric Transformations and Image Registration
6.1 Transforming Points
6.2 Affine Transformations
6.3 Projective Transformations
6.4 Applying Geometric Transformations to Images
6.5 Image Coordinate Systems in MATLAB
6.5.1 Output Image Location
6.5.2 Controlling the Output Grid
6.6 Image Interpolation
6.6.1 Interpolation in Two Dimensions
6.6.2 Comparing Interpolation Methods
6.7 Image Registration
6.7.1 Registration Process
6.7.2 Manual Feature Selection and Matching Using cpselect
6.7.3 Inferring Transformation Parameters Using cp2tform
6.7.4 Visualizing Aligned Images
6.7.5 Area-Based Registration
6.7.5 Automatic Feature-Based Registration

I wrote about many of these topics here in the blog first.

16 Responses to “Spatial transformations chapter in new edition of Digital Image Processing Using MATLAB”

  1. Charalampos Kornelakis replied on :

    I have a project to finish up to this september! I need to implement two different algorithms on matlab one using feature-based technique and another one for area-based. Do you think that this book will help me to finish my project??

  2. Steve replied on :

    Charalampos—I’ll describe the sections and let you decide. The area-based registration section illustrates how one might use normalized cross-correlation to determine a translation relationship between two images and then visualize the result. Two related examples are given with MATLAB code. The automatic feature-based registration section is just a two-paragraph, bare-bones outline of a couple of techniques with some useful references.

  3. Charalampos Kornelakis replied on :

    Steve- Could you propose me some other book that it could help me to finish my project ?? where can i find information and examples on this subject ?? I have to use only these two techniques. could you help me??

  4. Steve replied on :

    Charalampos—You might want to give this tutorial by Szeliski a try. Please note that the terms “feature-based” and “area-based” are broad categories rather than specific methods.

  5. Charalampos Kornelakis replied on :

    Steve – Could you tell two or three methods on each category that could help me a lot to continue searching information.

  6. Steve replied on :

    Charalampos—The tutorial I linked to has a lot of good information about the various methods.

  7. Vassilis replied on :

    the imresize function uses an antiliasing filter for decimation or interpolation for e.g. bilinear method. Can i have more info about this filtering.
    e.g. i have a gray image of height 27 pixels. I want to go to 30 pixels, which is the filter?
    or if i want ot go to 30 from 45 pixels height.

    Thanks,
    Vassilis

  8. Steve replied on :

    Vassilis—No antialiasing is applied when you enlarge an image. It is not necessary.

  9. andrea replied on :

    i need to coregister two
    3-D volumes (e.g two set of MRI scan) one onto the other
    to have both registered in the same space
    Can I do that using image processing toolbox ?

    thanks

    Andrea

  10. Steve replied on :

    Andrea—You can do three-dimensional spatial transforms using tformarray, but the toolbox does not contain functions for inferring three-dimensional transforms.

  11. chaohong wu replied on :

    Hi, Steve,

    I wonder how antialiasing function is implemented in imresize, or geometric transformation such as perspective projection.

    Thanks!

    Chaohong

  12. Steve replied on :

    Chaohong—imresize performs interpolation and antialiasing simultaneously by stretching the interpolation kernel. You can use imtransform for other kinds of geometric transformations.

  13. chaohong wu replied on :

    Hi, Steve

    I understand that imresize performs interpolation and antialiasing simultaneously by stretching the interpolation kernel. I know interpolation (biocubic, bilinear, or nearest neighbor- no antialiasing) very well, but I can not figure out how antialiasing stretchs the interpolation kernel in matlab. Could you illustrate this concept with an example? For example, you want to perform perspective transform of trapzoid shape object to rectangle shape using biocubic interpolation. I am very interested in “antialiasing” in the transformation. I will appreciate it if you could explain it in elaborate detail.

    Thanks!

    Chaohong

  14. Steve replied on :

    Chaohong—It’s not that “antialiasing stretches the interpolation kernel.” Rather, the implementation of imresize stretches the interpolation kernel in order to have an antialiasing effect. If yo want more information, the particular implementation used by imresize was inspired by the article “General Filtered Image Rescaling,” by Dale Schumacher, in Graphics Gems III, Morgan Kaufmann, 1994. Antialiasing for perspective transforms would have be implemented differently since the local scaling factors are spatially varying. I’m sorry that I don’t have time to create for you an explanation in elaborate detail.

  15. chaohong wu replied on :

    Hi, Steve

    Thank you very much for your immediate reply.
    Can you give me one paper for implementations of Antialiasing for perspective transforms?

    Thanks!

    Chaohong

  16. Steve replied on :

    Chaohong—I do not know of such a paper.


MathWorks
Steve Eddins is a software development manager in the MATLAB and image processing areas at MathWorks. Steve coauthored Digital Image Processing Using MATLAB. He writes here about image processing concepts, algorithm implementations, and MATLAB.

These postings are the author's and don't necessarily represent the opinions of The MathWorks.