how to do this disparity map in OpenCV - python

paper "Fast Obstacle Detection Using U-Disparity Maps with Stereo Vision"
reference paper: "Fast Obstacle Detection Using U-Disparity Maps with Stereo Vision"
I want to ask can opencv do this reslut?
How?
Thank you
Thanks for #Liew Xun's comment.
Input are left image and right image from two camera.(stereo camera)
I want to use opencv's cv2.StereoBM to do the result like the paper's image.
But,unfortunately i failed. I can't make the result like this paper's image.
So i am here to ask does anybody have the same experience do disparity map.
Can you give me a help or give me some advice?

What you are asking is a mobile robotics visual perception related question.
I guess this author made a trick on you as it is not called U disparity
The stereo depth can be computed by opencv stereo matching. If you fail, there could be many reason. you need to post what you have. you can follow this link to get depth map. https://docs.opencv.org/master/dd/d53/tutorial_py_depthmap.html
This right image is done by concatenating depth observation along the vertical plane. It is called V disparity. For normal road scene, most of the background road should be on the same straight line spam diagonally. Anything not on this line can be considered as an obstacle above or below the road surface. When the sensing distance is far, there might be deformation for the line because of stereo uncertainty. This algorithm is designed to detect cases such as negative obstacle(drains, potholes) and positive obstacle( cars humans)
you can find a sample implementation here
https://github.com/thinkbell/v_disparity
If you are Phd candidate, you need to read a lot more paper to know whether some paper is lying on their contribution rather than post question here and hope someone can tell you the answer.
Regards
Dr Yuan Shenghai

Related

How to match laser points in laser based stereo camera?

I am trying to scan an object with a laser to extract 3D point clouds. There are 2 cameras and 1 laser in my setup. What I do is giving nonzero points in masks to OpenCV's triangulatePoints function as projPoints arg. Since both numbers of points must be the same for triangulatePoints function and there are 2 masks, if one mask has more nonzero points than the other, I basically downsize it to other's size by doing this:
l1 = len(pts1)
l2 = len(pts2)
newPts1 = pts1[0:l2]
Is there a good way for matching left and right frame nonzero points?
First, if your images normally look like that, your sensors are deeply saturated, and consequently your 3D ranges are either worthless or much less accurate than they could be.
Second, you should aim for matching one point per rectified scanline on each image of the pair, rather than a set of points. The whole idea of using a laser stripe is to get a well focused beam of light on as small a spot or band as possible, so you can probe the surface in detail.
For best accuracy, the peak-finding should be done independently on each scanline of the original (distorted and not rectified) images, so it is not affected by the interpolation used by the undistortion and stereo rectification procedures. Rather, you would use the geometrical undistortion and stereo rectification transforms to map the peaks detected in original images into the rectified ones.
There are several classical algorithms for peak-finding with laser stripe-based triangulation methods, you may find this other answer of mine useful.
Last, if your setup is expected to be as in the picture, with the laser stripe illuminating two orthogonal planes in addition to the object of interest, then you do not need to use stereo at all: you can solve for the 3D plane spanned by the laser stripe projector and triangulate by intersecting that plane with each ray back-projecting the peaks of the image of the laser stripe on the object. This is similar to one of the methods J. Y. Bouguet used in his old Ph.D. thesis on desktop photography (here is a summary by S. Seitz). One implementation using a laser striper is detailed in this patent. This method is surprisingly accurate: with it we achieved approximately 0.2mm accuracy in a cubic foot of volume using a dinky 640x480 CCD video camera back in 1999. Patent has expired, so you are free to enjoy it.

How to Get Camera Angle and Rotation of Room?

I am new on computer vision, I have a project that can segments floor after that it can change floor. I have good segmentation model but I don't know how to change pattern properly. As an example if somebody uploads this picture;
After that, if gives this image as input;
output should be like that;
As you can see in the image changed floor rotated and well fitted to room.
It can be any of room picture but pattern always fixed like an example that I gived above. I can do converting and integration operations but I don't know how to get room rotation and and camera angle automatically. I am open to any kind of suggestions or resources to topic in computer vision about for thath kind of operations.
How can I solve this?
Note: Sorry about my poor english. I hope I could manage to describe my problem.

featuredetection and measurements in x-ray image of solder joint

I have a lot of pictures from a PCB taken with a X-Ray camera. I want to meassure the amount of solder in the holes. I thought about using python for that task as I am most familar with it. I have no idea where to start. I looked at openCV and scikit-image but am a little bit lost about how to approach my problem.
I attached a detail from one image where you can see one single joint. Every original picture has 8 of that joints. 1
I though about this workflow:
find the walls and upper/lower boundaries of the hole
fit a rectangle or even better a cylinder inside the boundaries
meassure the area of the rectangle/cylinder
find the solder in the hole
fit a rectangle or cylinder in the solder
meassure the area
I am already stuck at the first part of the job...My Problem is, that the edges are really sketchy. I tried some sort of prepocessing (changing the contrast and sharpness of the image) but it didn't help that much.
Does anyone has a tip where I can start to read about this type of feature detection?

Size and shape prediction (OpenCV or Tensorflow/Keras)

Introduction
I am newbie in statistics and NN.
I will describe my prolem below.
Problem
I want to find when the object on the video (images as well), will have following parameters:
the smallest diameter,
when the shape is closest to circle,
when the object have highest brightness.
Example:
https://imgur.com/a/pPIH6GX
Possible approaches
I started with neural networks (tensorflow) and object detection module, which detect objects similiar to circles, then I calculate the area of bounidng box. Then I started exploring mask RCNN networks and I am considering to obtain area of the mask. But it didn't solve my problem.
Asking for advice
The question is how to add other parameters? Like brightness or shape? Could you please give me some suggestions? Research papers, articles or post your thoughts in this field. I am waiting for deep conversation 😊
Many thanks!
Update 1
To detect circles Hough Transform can be used.
To find the smallest diameter I should consider thinness ratio.
Any other thoughts?
You should consider learning basics of image processing and computer vision first.
Locating circles on the image is a basic problem, so it's well-studied and has plenty of robust solutions.
There is no even need to use NN in your particular case (find a circle-like shapes at synthetic image you provided).
Refer to Wikipedia enter link description here to start with basics.

Aruco marker detection with 360 camera?

recently I have been playing with the 360 fly HD camera and wondering if Aruco Marker can be detected during real time. The first thing come to my mind is to convert the fisheye image into perspective image first and then perform the detection on the perspective image(I am gonna try it and will update my result here later).
Converting a fisheye image into a panoramic, spherical or perspective projection
Hugin HowTo: Convert 360 Image to Cropped Flat Panoramic Image
I am not an expert in this field. Has anyone done this before? Is this something can be achieved by calibrating the camera differently such as correcting the camera matrix and distortion coefficient matrix?
If I am heading to the wrong direction, please let me know.
I was able to get a better understanding during the process.
First, I want to say that 360(fisheye, spherical, however you call it) image is NOT distorted. I was so tricked by my intuition and thought that the image was distorted based on what it looks like. NO it is not distorted. Please read enter link description here for more information.
Next, I have tried both 360 fly cameras and neither works. Every time I tried to access the camera with opencv, it automatically powers off and switch to storage mode. I guess the 360 dev team purposely implements this switching function to prevent "hacking" of their products. But, I've seen people successfully hacked the 360 fly, it's definitely workable.
At last, I was able to detect Aruco with Ricoh theta V(theta S should also work). It's so developer friendly and I was able to make it run in my first attempt. You just have to select the right camera and let the code run. The only problem is the range, which is expected(about 6ft) and Ricoh camera is kind of expensive($499).
click here to view succesful detection

Categories