I have set up a 360-degree vision system on my robot and would like to use it to aid indoor navigation. I am trying to figure out how the robot can use the images to determine what room it is in and how it is positioned in that room (at least approximately). The idea is to have the robot explore the house and collect panoramic snapshots as it goes. Then I want to extract a set of features from these snapshots to be used in a kind of principle-component pattern matching algorithm for later recognition. I then figure I could use cross-correlation or other methods to determine roughly how the robot is oriented in the room and also where it is in relation to the room center.
But to get started, I need to figure out a good set of features to extract from the panoramic images. Some papers I have read simply take a circular slice of the raw image and use the resulting grayscale values (indexed by angle) as an N-dimensional vector where N is the angular resolution. I figured I might as well use color information too so I am starting with the Flood Fill and Blob Filters. What I need to get at the end is a set of numbers, indexed by angular displacement along the panoramic image, that I can feed into a principle-components analysis.
I have attached a representative image from my camera setup which shows two rooms and a sliding glass door looking out to a balcony. I've also attached a .robo file illustrating my initial thinking as to what features to extract. Basically I unwrap the image, crop out the artifacts, blur it, flood fill, blob separate and color equalize. Then I'm not sure what to take from that for my vectors. The blob statistics would probably be a good bet, but they are not evenly spaced at fixed angles. I suppose I could still sample at a fixed angular step (say every 5 degrees) then use the statistics from the nearest blob for the vector elements.
Any other ideas would be greatly appreciated!