Hot answers tagged

4

AprilTag is the state-of-the-art solution for pose estimation. The library itself already has pre-built functions to compute the marker position, given its size. The pose is estimated by homography decomposition and it's quite good if you don't go too far (2 or 3 meters for a 20cm marker). There is the C implementation made by the authors at University of ...


3

It seems that your algorithm that controls the speed of your telescope does not make use of any integral part, thus you've been observing drifts while tracking. Let $e_x$ be the error in the image plane between the x-coordinate $o_x$ of the object and the center $c_x$: $$ e_x=o_x-c_x. $$ Then, the azimuth velocity $\dot{a}$ of your telescope should be: $$ \...


3

Statistical confidence is most often defined in terms of a score that is the number of standard deviations away from the mean. Now let's say you have a set of states (a state vector) used to define an object recognized using image processing in OpenCV (for example, RGB data, HSV data, filter responses, etc.). Given a series of training images for vehicles, ...


3

It looks like what I saw when a colleague of mine was working with fisheye lenses; I found this post after doing an image search for "rectify fisheye image" and following the link from this picture. At that post, they're using openCV to do the rectification. I'm always reluctant to bulk copy/paste someone else's content, so I'll just say that the tl;dr ...


2

tl;dr - SLAM is good enough for your task. The ceiling is the area where your robot will be traveling in. Few things to notice - Ceiling is fixed and not changing. Things on the ceiling are fixed as well at any given time unless the environment is changed. The number of things on the ceiling are also fixed. If you are going to be using a feature based map ...


2

You need real camera synchronization which means using cameras that both have external trigger capability (it is like the "remote shutter" on consumer/DSLRs). What you do is feed a common trigger signal to both cameras and sync them like that down to the sub-ms level (the accuracy largely depends on the camera HW but is usually very good, usually in us). ...


2

One of the best ways is to use a combination of hough-transform (what you have achieved is nice) and inverse perspective transform (as in http://www.vision.caltech.edu/malaa/publications/aly08realtime.pdf). This is because, inverse perspective transform fails at 'very near' and 'very far' distances and hough transform can be compensated for that. Now, once ...


2

I don't know what the proper way to do this is but I can give you ideas to make it better: define an exact transformation for each camera. You could calibrate each camera using a grid pattern and by using a bigger one, multiple pictures, and averaging the transforms, you could define the transformation between the fish eye view and the normal view more ...


2

This is an excellent question that is currently being explored directly by field experts. Here are some of the latest publications that consider the problem you are encountering: Robotic Grasping of Novel Objects using Vision Direct Perception and Action Decision for Unknown Object Grasping Realtime plane detection for projection Augmented Reality in an ...


2

If you understand how relative pose estimation works in theory, it should be quite trivial to translate it into OpenCV code. First, you can pick any feature detection/description approach you like (say SIFT and brute force matching) and obtain a list of matches. But here, you need to be absolutely sure there is overlap between the images: because without ...


2

Added OK, guys, simple mistake. I previously used warpPerspective to warp images instead of restoring. Since it works that way, I didn't read the doc thoroughly. It turns out that if it is for restoring, the flag WARP_INVERSE_MAP should be set. Change the function call to this, and that's it. warpPerspective(tempImgC, imgC, matPerspective, Size(2500, 2000),...


1

The description of the problem fits great to a technique which is called model predictive control. It can solve the problem of tracking an object with a telescope on a mathematical satisfying way. The first thing to do is to create a prediction model. The next step is to program a controller which is utilizing the estimation for the control the telescope ...


1

Thanks for the replies. I figured out to make it work. I divided the image into different regions using horizontal lines. Then, I have a timer in C# that every x milliseconds figures out which region the centroid of the object is in. (The centroid is obtained by finding the centroid of the OpenCV tracker bounding box). Then each timer cycle it checks to see ...


1

What do you mean by data fusion Here's some definitions I can think of: Determine from the features in the scene the positions of the camera Determine from the positions of the camera the geometry of the scene Determine from the features of the scene the intrinsic parameters of the camera. Since you say you have fully calibrated the three cameras jointly ...


1

As you say, you can't trigger them at the exact same time without hardware capable of doing so. Some IMU's supply an external trigger pin, and I see no reason why you couldn't buy cameras that have a trigger pin. Sure, your suggestion of using two threads and triggering them both at the same time that way would work, so long as you can send messages to both ...


1

I recommend using april tags. They are similar to qr codes but were specifically designed with robotics in mind. There is a library on the april tag website. The library can be used to solve for the position and orientation of each april tag in a given image. https://april.eecs.umich.edu/software/apriltag/


1

I will assume, similar to OpenCV, that each camera is a pinhole camera, so you already corrected for things like lens distortion. In this case each visible point in 3D space $(x,y,z)$ gets projected into camera coordinates using $$ \begin{bmatrix} x'_i \\ y'_i \\ z'_i \end{bmatrix} = R_i \, \begin{bmatrix} x \\ y \\ z \end{bmatrix} + \vec{t}_i, \\ u_i = \...


1

A Near-IR or IR camera which can rotate and tilt, that is installed over the stage would probably be an acceptable and fairly well performing solution. Installation would be simple: screw on, and take the cable down (hidden somehow), to a computer system for processing. This would take several pictures/or continuous video and an image processing software ...


1

http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html, this link maybe helpful. Here is my answer based on that. 1.What does normalized point coordinates means? In the pinhole camera model $$ \begin{bmatrix} x \\ y \\ z \end{bmatrix} = R \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} + t $$ $$x'= x/z$$ $$y'= y/z$$ $$u = ...


1

A quite simple math is involved in this task, but you need to be aware of the pinhole camera model as well as of the homographic projection. The pinhole camera model gives you the 3D position $(x,y,z)$ of a point in the space whose projection in the image plane corresponds to the $(u,v)$ pixel at a distance $\lambda$ from the image plane (considered ...


1

processing 1st vs 10th image and 9th vs 10th image - will the fist give 10x relative scale than the second? It depends. In the simplest perspective, 'relative' means what the transformation is from one view to another, given two images. So if you just use multiple view geometry techniques to find the transformation between any two images, you'll always end ...


1

I suspect, but don't know, that the Tango uses a variant of volumetric reconstruction using a Truncated Signed Distance Function (Good intro at http://www.cs.nyu.edu/courses/fall12/CSCI-GA.2945-001/dl/jiakai-slides.pdf) It uses structured IR light to obtain a dense depth map, projects these points back into 3-space as a point cloud, probably turns this ...


1

As HighVoltage already suggested this should be an easy task using the HSV spectrum. Your code could look something like this: // img is a Mat containing your image // Convert your image into HSV Mat imgHSV = img.clone(); cvtColor(img, imgHSV, CV_BGR2HSV); // Blur to reduce noise blur(imgHSV, imgHSV, Size(3,3), Point(-1,-1)); // Threshold image to only ...


1

Maybe you should rectify the wide-angle camera images with cv::fisheye::stereoRectify, which outputs a pair of undistort images with aligned epipolar lines.


1

If you search a bit you'll find others have all done variations on this approach.


1

Boost is linked against your code by default when you're using ROS. I'll take a guess, you have namespace issue. Refrain from using "using namespace" and explicitly use cv:: in front of your calls. It's probably a name collision with Boost.


1

If you choose to use real time object detection, consider the two following: Deep Drone: Object Detection and Tracking for Smart Drones on Embedded Systems YOLO: Real-Time Object Detection The first is a project out of Stanford that is highly relevant to your project. They consider the use of a few different object detection strategies. The strategy I ...


1

A standard approach (using opencv solvePnP) is using at least 4 points in the image that define landmarks of a known geometry. You can then get the pose of the camera relative to the object. For example if you had a blue rectangle of which you could detect the corners in the image, and you knew the dimensions of this rectangle, you could work out the ...


1

On the condition that you don't care about the position of the quadrotor regarding your target, but instead only of the absolute distance, I would say that for starters, you can extract the distance information from your OpenCV algorithm. Have a target with a clear contour (eg a coloured ball) and find its relative position from the center of the camera ...


Only top voted, non community-wiki answers of a minimum length are eligible