tag:blogger.com,1999:blog-150779482024-02-28T07:34:07.025+01:00vanishing pointsComputer Vision & HaskellUnknownnoreply@blogger.comBlogger12125tag:blogger.com,1999:blog-15077948.post-42929167901520515072011-05-17T19:43:00.000+02:002011-05-17T19:43:00.524+02:00metric rectification from circlesThe circular points encode the metric structure of the 2D plane. They are invariant to rotation, isotropic scaling and translation. If the plane undergoes a more general (e.g. affine or projective) transformation they move to some unknown location. Metric rectification can be performed if we find the image of the circular points and move them back to their original location. These points Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-15077948.post-28343868683697601532011-03-02T12:48:00.000+01:002011-03-02T12:49:02.199+01:00easyVision in a netbookI have updated the installation instructions, including help for the recent IPP 7.0.In one of the tests I have installed the whole system (except the CUDA package for SIFT) in a cheap netbook with Ubuntu 10.10. The applications obviously run slower, but I am surprised to find that most of them are perfectly usable. I can use it for class demos.The built-in camera works without any problem, and Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-15077948.post-11879085387850230352011-02-22T21:48:00.000+01:002011-02-22T21:48:17.220+01:00Tensor DiagramsIn 2009 we attended ICCV at Kyoto. Visiting Japan was a fantastic experience.We presented a graphic interpretation of multiview geometry:For instance, this is the beautiful internal structure of the Fundamental Matrix:All tensor constructions in the paper were developed and checked with the Haskell package hTensor.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-15077948.post-20508303331328325742011-02-14T19:31:00.000+01:002011-02-14T19:31:20.403+01:00GEAI'm sorry that I have not updated this blog for so long, there are many ideas to try out! But I have decided that at least I must include the screenshots of the prototypes I am working on, if only to remember them in the future.We are happy to have a paper accepted at CVPR 2011, so I will start with the screenshot of an old friend:This is obtained by a Haskell implementation of the GEA (globalUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-15077948.post-32450413549451751922009-05-28T13:17:00.006+02:002009-05-28T17:15:48.134+02:00SiftGPUThe library now includes an interface to the excellent ChangChang Wu's GPU implementation of SIFT. Vision problems that were recently considered infeasible can now be easily solved in standard computers.With a NVIDIA 9800 GT we obtain interest points and descriptors at ~ 25 fps for 640x480 images, depending on the level of detail in the scene. Fast GPU point matching is also provided.(Using a Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-15077948.post-369364717274484702009-01-12T16:21:00.002+01:002011-05-18T23:45:55.215+02:00TutorialAfter a long delay, I have finally released a first version of a tutorial for easyVision. I know that this system is only useful to me, but trying to explain something to other people is the best way to find things that can be improved, have a poor design, or more probably, that I don't really understand.
For instance, I noticed that the definition of camera combinators was too verbose. We can Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-15077948.post-7797287233830572682008-06-28T20:50:00.000+02:002008-11-13T19:40:04.300+01:00Interest PointsRecent algorithms for detection of scale and rotation invariant interest points have produced fantastic advances in many computer vision fields. For instance, explicit segmentation is no longer required in some object recognition applications.Interest points are typically computed as local extrema in the scale-space of an appropriate response function. The celebrated SIFT by D. Lowe is based on Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-15077948.post-85224040486820048412008-01-12T18:13:00.000+01:002008-11-13T19:40:04.922+01:003D point sensorThe position of a point in space can be computed from two views using triangulation:Of course, to get a reasonably accurate 3D reconstruction (modulo scale) we need the parameters of the stereo pair (focal lengths and relative position and orientation of the cameras). Otherwise the estimated 3D points may suffer unacceptable projective deformation.One of the most wonderful results of multiview Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-15077948.post-77425891869647248682007-12-21T21:03:00.000+01:002008-11-13T19:40:05.424+01:00simple object recognitionUnder controlled conditions, simple objects can be recognized using just elementary texture and color features. For example, we can recognize playing cards from histograms of local binary patterns and hue values.First we must locate the cards in the scene. To do this we can use any method which is able to find rectangles with the right aspect ratio:Then we rectify the perspective views:And Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-15077948.post-8720852290795314422007-11-19T12:37:00.000+01:002007-11-19T12:40:04.359+01:00camera combinatorsLazy evaluation and higher order functions are the basis of a very useful programming abstraction. Using standard Haskell list functions we can easily define combinators which work on the infinite sequence of images captured by a camera.A camera is just an action which returns an image:Type Camera = IO ImageA camera combinator is a function which typically takes one or more cameras and other Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-15077948.post-63254100216824779612007-10-30T20:22:00.000+01:002008-11-13T19:40:06.143+01:00functional augmented realityCamera pose estimation is very useful to create amusing toy applications, allowing the insertion of virtual objects in the scene. Let's show a simple example. First we take a sheet of paper with known aspect ratio (A4), which serves as our 3D reference frame:When the rectangle is properly detected we insert the desired virtual objects as seen by the estimated camera:Interestingly, the objects Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-15077948.post-1123087198327147452007-10-27T18:13:00.000+02:002008-11-13T19:40:06.386+01:00strange loopIn the first post I would like to show something related to the perceptual strange loops described by Hofstadter.We have a simple application for contour recognition based on Fourier properties. The screenshot shows the raw contours in blue and the corresponding affine-normalized versions in yellow. We have clicked on one "A" and then all the similar shapes are shown in red:The interesting thing Unknownnoreply@blogger.com2