Before going home yesterday I left a process running that had the latest version of the homography algorithm. The new trial included multiple markers and changing the way of calculating the image transformation. When I arrived this morning, I found what I had been expecting from the beginning: a complete image normalization. In the figure below we can see the results of this normalization. The first row of images are directly taken from the camera and show the same “plot” taken from different perspectives. The second row shows the same image but after the normalization process. Notice that the cables and electrical boxes in the second row are always in the same place (in the image plane) whereas they are scattered in different positions (in the image plane) in the other images.
One of the main changes from previous experiments was the transition from warpAffine to perspectiveAffine (opencv functions). Warp affine assumes parallelograms. This is ok if one is transforming to a parallelogram; that is the parallel corners in the original image would need to stay parallel in the transformed image; but in our case this caused shifts in the resulting images and reduced the accuracy of the normalization. Therefore we turned to the perspectiveAffine function that does not have this restriction. An initial parallelogram can be transformed into a trapezoid giving more freedom for the resulting pixels to go where they are supposed to go in the normalized picture.
The second main change is the use of 3 additional markers. I chose to test with 4 markers not because the perspectiveAffine function needed 4 points; but because I thought that the normalization accuracy would greatly increase if the 4 points contained the region of interest. One of the things I observed with my previous experiments was that the accuracy decreased in pixels that were far from the region contained within the warp points (points used to calculated the transformation). It seems that the change was successful as the region contained inside the 4 markers shows little variability between consecutive images (increase accuracy).
A question that might arise is the need for all this when one can clearly pinpoint the cables in the image. This is true for the example images that have few artifacts and have a background that facilitates identification, but doing the same thing in images like the ones from Zackenberg is more difficult because of the size of the objects of interest (extremely small) and the amount of noise in the image. It is my opinion that this technique greatly improves gathering data from plots in an image format.
This technique could be compared to the way phenological data is usually gathered: 1)hand counting the plant occurrences and 2)deploying automatic cameras in strategic points. It is my intention to find out the cases in which this technique might be better in terms of collection time, initial cost, maintenance cost, collection process and other relative dimensions that I have not thought of yet :)