PHd experimental results

2010.08.27. Corner detection using real images with and without Gabor Filters

As we're able to see on the last work, I'm using Gabor filters to detect borders in a specific orientation combination, and with a single scale. That way, when I use FAST algorithm to detect corners, I only get the corners under these specifications. The only reason to use FAST to detect corners is because is quite precise to do that. We can see this example:

a) Original image:

[CuadradoTriangulo]

b) FAST cornered image (red marks):

[CuadradoTrianguloFAST]

My main propose is to show the difference between:

- Use FAST over Gabor filtered image.

- Use FAST over original image.

On this experiment, we're using a real Firewire camera to get the images in real time. The results are the followings:

a) Original image:

[SituacionReal]

b) Gabor filtered image (orientations: 0º x 90º):

[SituacionRealGABOR]

c) FAST over Gabor filtered image:

[SituacionRealFAST]

d) FAST over original image:

[SituacionRealSinGABOR]

The main difference between using or not Gabor Filters is awesome: c-example has only desirable corners, but d-example has too much noise.

2010.08.12. Using Gabor Filters to detect basic shapes

I've implemented a Gabor filters system which I'm going to use to detect basic shapes (squares, triangles, circles). In image processing, a Gabor filter is a linear filter typically used for edge detection. Frequency and orientation representations of Gabor filter are similar to those of human visual system, and it has been found to be particularly appropriate for texture representation and discrimination. In the spatial domain, a 2D Gabor filter is a Gaussian kernel function modulated by a sinusoidal plane wave. (Text extracted from Wikipedia.)

Basic Gabor filter form:

[FiltroGabor]

So, I get forty filters like this one, but in different orientations and scales: 5 scales x 8 orientations (each of them). That way, I can get different border detection results.

We can get these results using just one scale and different orientations. We can appreciate the differences. (The first picture is the original image.)

[Mofli] [MofliFiltro1] [MofliFiltro2] [MofliFiltro3] [MofliFiltro4] [MofliFiltro5] [MofliFiltro6] [MofliFiltro7]

2010.07.13. Log-polar images and movement analysis

In order to do a faster attention system algorithm, we're gonna work with log-polar images. At first, we have a covert attention system guided through the movement. That way, we're simulating the human eye mechanism: retina and fovea, and the basic human eye behavior: we pay attention where we see movement.

[LogPolarInMovement]

2010.02.01. Algorithm detect and pay attention to arrows

Now, algorithm's able to detect faces, parallelograms and arrows, with too much noise. That way, our robot will able to navigate following these landmarks.

[ArrowFaceAndParallDetection]

2009.10.28. Complete floor 3D reconstruction

I've introduced the RT matrix concept in order to calculate relative positions. So, we can know the camera position in the world and its focus of attention (foa). We have the following RT-matrices:

- Robot position relative to world coordinates (translation on X & Y axis and rotation around Z axis)

- Pantilt base position relative to robot position (translation on Z axis)

- Tilt height position relative to pantilt base (translation on Z axis and rotation around Z axis)

- Tilt axis relative to tilt height (rotation around Y axis)

- Camera optical center (translation on X & Z axis)

- Focus of attention relative to camera position (translations on X axis)

Furthermore, I've added robot Pioneer movement in order to reconstruct the whole floor.

[CompleteFloorReconstruction]

Actual robotics hardware

Actually, I'm working with these two robots (by ActivMedia). One of them has attached a pan-tilt unit (by Directed Perception) to control the camera/s orientation. And the other one has two directionable cameras. Furthermore, both include a Hokuyo scanning laser as main sensor.

[robots]

Graphic Data Processing Master

Raytracing

What's Raytracing? It's a method that allows you to create photo-realistic images on a computer.

It attempts to trace the paths of light that contribute to each pixel that make up a scene. Instead of computing visible surfaces, determine intensity contributions. Furthermore, it compute global ilumination.

In our example, the first image show a single ball iluminate with a single light. Here we've calculate only local ilumination and shadows. The second image is the same example, but getting several samples per pixel; so the result is a more clear image.

[ballsRaytracing] [ballsRaytracingSuperSampled]

Now, we've two balls and different lights. So we've to calculate global ilumination and other natural effects like reflection or refraction. The second image is the same example, but getting several samples per pixel; so the result is a more clear image.

[ballsRaytracingMirror] [ballsRaytracingMirrorSuperSampled]

Computer Science Grad Project

Frontier hypothesis for floor 3D recognition

Here we're the gui interface for floor 3D recognition technique. We can see the virtual world created using OpenGL as graphic library, and some geometry algorithms to generate the camera virtual optic rays. Moreover, we get the original image from robot camera and the different filters to get the final image. It can be used to estimate distances between obstacles and robot position.

[3dRecognition]

Visual localization method

The following images show localization method used to get the robot position in real time. This example shows the ability of particle filters to represent the ambiguities occurring during global robot localization.

Colour filtered image

On the next image, we can see the gui interface to represent how the robot camera gets the actual image (first image) from laboratory ceiling. Then, it's passed through a colour filter to get symbolic colours (artificial marks) from its.

We do the same process with theoretical image, got from some particle located around some known position (red point). This particle represent the robot position, and it's seeing the theoretical second image from virtual laboratory ceiling.

Both images are reduced to a 4x3px image, whose colours represent symbolic colours taked out of the 12 different zones from original 320x240px image.

[localizationGrayScale]

Localization particles

Now, we throw random particles over virtual laboratory floor. And they see what robot would see if it were in that position. Finally we'll get the reduced images (real and theoretical) and both are compared each other.

The most similar particle view will be the selected to represent the theoretical robot position (green point).

[localizationParticles]