At the end of each week I post a short report about my progress. |

### Weekly Reports

#### Week 17

posted Apr 27, 2012, 7:14 AM by Adam Lärkeryd [ updated Apr 27, 2012, 7:18 AM ]

This week I've been back to the lab twice to take new sets of images. I came up with at new idea to put the light rings beneath and above the pellet. This gives a 360 lighting of the pellet and reduces the lighting changes between the stereo images. I collected 2 sets of data from the same pellet so that I can calculate the volume with both sets and compare the results. Also I took one set of a steel ball with known volume that I can analyse. I need more time to analyse the data so I won't post any result this week, hopefully this can be done week 18. Apart from laborative work I've continued to write on my report. |

#### Week 16

posted Apr 20, 2012, 10:18 AM by Adam Lärkeryd [ updated Apr 27, 2012, 7:17 AM ]

I've spent all this week writing on my report so I have no new research results. I met Matthew this Wednesday and we discussed possible ways to evaluate my results. One way would be to make several measurements on the same pellet, another to measure an object of known volume. I will probably try both. But I first need to solve the problem of merging the top and bottom faces of the pellet to get a correct volume. I plan to go to the lab again next week and hopefully take my last pictures. |

#### Week 15

posted Apr 14, 2012, 5:33 AM by Adam Lärkeryd [ updated Apr 27, 2012, 7:17 AM ]

This week I managed to calculate the volume of my pellet model I generated last week. Because of low precision floating point numbers in MeshLab I had to implement the volume calculation algorithm myself in Python. I also did some experiments to evaluate how accurate the volume calculation step was. The algorithm seems good enough for my purpose. The rest of the week I've been working on the final report. I have put up a rough structure and started to write the introduction part. Next week I plan to continue working on the report. |

#### Week 13

posted Mar 29, 2012, 12:01 PM by Adam Lärkeryd

As I now have a method for approximately align the point cloud surfaces I wanted to test it using data from the whole pellet. As I only had data for 90 degrees I went back to the lab to acquire data from 360 degrees. This meant 12 image pairs with 30 degrees increments. I also took a lot more calibration images this time to be sure to get good calibrated camera intrinsics. Using this data I was able to reconstruct the whole surface of the pellet excluding the top and the bottom. I've acquired data for the top and the bottom but haven't yet tired to merge them with my model. I put together another progress presentation at the end of this week also. At Friday I went by train to Malmberget to visit the LKAB facility and my supervisor Kjell-Ove. |

#### Week 12

posted Mar 23, 2012, 12:28 PM by Adam Lärkeryd [ updated Mar 23, 2012, 12:28 PM ]

This week I have managed to get the equations right to approximately align the pellet faces. I tried this on four faces from Lab 6 with 30 degrees difference. The result was a 90 degree pellet surface that looks good. I have not acquired more than 90 degrees from Lab 6 so I will have to take more pictures to be able to fully reconstruct the pellet surface. I also investigated further how the volume calculation should be done once I have data for the whole surface. I downloaded the source code for MeshLab to see how they have implemented their volume calculations. I found a reference to an article that describes the method. The method used seem to work but I'm not sure about the accuracy, especially as my model is so dense and small. At the end of the week I tired to scale my model by instead of measuring in meters choose the unit length of 1 millimeter. This however somehow messed up my alignment calculations. I don't yet know why. Next week I'm heading to Malmberget on Friday to meet my supervisor at LKAB, Kjell-Ove. I will present my progress and he will guide me through the facility. |

#### Week 11

posted Mar 16, 2012, 8:56 AM by Adam Lärkeryd

This week I've looked at the resolution in depth that I can achieve with my system. I found that the depth resolution depends on the angle of photographing as well as the distance to the object. I did some calculations using a given formula to find out the resolution I can achieve. With proper settings I should be able to reach bellow 10 µm. The rest of the week I've been trying to align my point cloud faces using some rotation transformation. As I know that my camera rotates around the object I should be able to calculate the approximate position of the neighboring faces. But this problem was harder than expected because I don't know the center of rotation. But I think I can somehow calculate the center of rotation but I have not found out how yet. I will continue looking into this next week. I have been away Thursday and Friday this week so I haven't had time to work on my project during these days. |

#### Week 10

posted Mar 9, 2012, 7:09 AM by Adam Lärkeryd [ updated Mar 9, 2012, 7:21 AM ]

This week my main problem has been alignment of two point cloud pellet surfaces into one large surface. After surface reconstruction with the Poisson algorithm I tried to align two surfaces using MeshLabs built in Alignment feature. This was harder than expected, mainly because I had too large angles between the photos taken in Lab 5 (60 degrees). I could not find a good match between the surfaces. Because of this problem I went back to the lab (Lab 6) and took new images at angles of 10, 20 and 30 degrees distance to ensure I had enough overlap to match them. Using this data it was easier to find a match but still the alignment is not perfect. I will continue with the alignment issue next week. I hope to be able to calculate approximately the difference between the surfaces by the fact that I know the approximate angle difference between the photos. If I get a good approximation of alignment I will be able to fine tune the match using MeshLab. I had to update to a newer version of MeshLab on Ubuntu (1.3.0) because the previous version was not able to do the alignment on raw point clouds. But this I now got working. I had to compile the program myself. I also had time to look a bit at noise filtering this week. I use a mix of thresholding and watershed algorithm to only cut out the most accurate area of my disparity maps. This removes uncertain points generated at the edges because of blur in the image. |

#### Week 9

posted Mar 2, 2012, 7:00 AM by Adam Lärkeryd

At the beginning of this week I tested my Stereo Correspondence code with different input parameters to see which gave the best disparity as output. I've done some reading in Oreilly's OpenCV to learn what exactly the parameters stood for in the algorithm. I also figured out why I needed to unset the CALIB_ZERO_DISPARITY flag for valid stereo rectification of my images. The reason was that my cameras are verging toward each other which means that zero disparity won't occur at infinite range as it would if the cameras where parallel. Later that day I was contacted by Richard who handed me the finished etched chessboards I've ordered from him last week. So now I have four different metal chessboards with square sizes of 0.10, 0.25, 0.50 and 1.00 millimeters. As I now had both a new lightening rig and these new calibration chessboard I returned to the lab to see if I could get event better looking pictures. With this new data I tried to mesh the resulting point clouds using the Ball Pivoting algorithm. But to my disappointment the meshing failed as the running time of the algorithm on this data exceeded one hour. This was unexpected because I have earlier successfully meshed a point cloud of nearly the same size in just a couple of minutes. I did some experiments to investigate what parameters that influence the running time but I have not yet come to any conclusions. At the end of the week I put together a short presentation of my current status in this project. I'm going to show it for the image analysis group at school on Monday next week. |

#### Week 8

posted Feb 24, 2012, 1:46 AM by Adam Lärkeryd [ updated Feb 24, 2012, 4:40 AM ]

After discussing the chessboard resolution problem with Matthew I got redirected to Richard Qvarnström at LTU. He suggested that we could etch the chessboard onto a copperplate. He works with some high accuracy laser technique that can etch with µm accuracy. Richard promised me to help me with this and hopefully it can be done next week. As I still was not able to calibrate my stereo images because of the accuracy problem I tried to run the disparity calculation code without rectifying my images from Lab 3. The results was better than I've expected. Probably because I have a very controlled stereo environment with rotation only around one axis. This makes the images almost parallel from start. I had to do some qualified guesses on the input parameters for the disparity to 3D calculations as I did not have the matrices from calibration. For the fourth time I again went to the lab to this time take pictures at very close range. I placed the camera only 15 cm from the pellet. This made only a piece of the surface of the pellet visible. I thought this would reduce the problem of needed depth of field. I took new calibration pictures of a printed chessboard (some of the pictures were decent enough to find the corners). Back from the lab I tried to do Stereo Calibration and rectification on these images. Sadly the output rectified images got totally wrong as with the Lab 3 calibration. But I noticed that the output matrices R and T that relates the both cameras seemed to match very well with my own theoretical calculations. So I began to suspect that the low resolution of my calibration images was not my problem. With a bit of testing I found the problem, a wrong set flag for one of the OpenCV functions. By turning this flag I got beautiful output rectified images of my pellet surface! As I now was able to calculate rectified images of both Lab 3 and Lab 4 I tried to input these images with their correct matrices into my disparity calculation code. The disparity maps and 3D models looked very promising! Next week I will work on the task of combining two of these 3D points clouds from different angles to try to build up the whole structure of the pellet. If I can get my etched chessboard manufactured I probably will go down the lab again to take some event better calibration data. Also my ring lights have arrived so I can test them and hopefully get more light on my pellet which mean better quality data. |

#### Week 7

posted Feb 17, 2012, 5:24 AM by Adam Lärkeryd

This week I've been working on the OpenCV software for calibrating the Stereo Vision system. My goal was to output a disparity map from images taken in the lab. I've been to the lab twice this week for acquiring more data to test my software on. I've also tested with some downloaded calibration images from some other guy on the Internet. My software seemed to work good on the internet examples but not well at all with my own pictures. As I don't yet now what the problem is I haven't reach my goal of this week and will have to continue work on this next week. I suspect that the problem is that my chessboard is really small relative to the camera distance which could be a problem. The fact that my software works with the external calibration images tells me that the code is probably correctly written. Also I have had some problems with finding the corners of my chessboard because of insufficient resolution of my printed calibration images. I need to find a better way to print the chessboard to get a higher resolution. At the end of the week I've looked for a better way to light my pellet in the lab. Until now I've only used an ordinary desktop lamp which is not optimal for my use. I will probably buy some LED lamps, maybe a LED ring to get a stronger more ambient light source. Next week I probably have to go to the lab again and try to get a better calibration set that corners can be found on. I will try to move the camera closer to the object to hopefully get my Stereo Calibration to output correctly rectified images of my pellet. |

1-10 of 14