Robotic Vision
Zo stránky SensorWiki
Support page to the MOOC Course by Peter Corke
Further reading
Vision in humans and nature
Stone, J. V. (2012).Vision and Brain: How We Perceive the World. Cambridge, MA: MIT Press. Ings, S. (2007). The Eye: A Natural History. London: Bloomsbury. Land, M. & Nilsson, D-E. (2002). Animal eyes. New York: Oxford University Press. Hughes, H. (1999). Sensory Exotica: A World beyond Human Experience. Cambridge, MA: MIT Press.
Computer and robot vision in general
Corke, P. (2013). Robotics, Vision and Control. Berlin: Springer. Szeliski, R. (2011). Computer vision: Algorithms and applications. New York: Springer.
Multiview/3D vision specifically
Hartley, R. & Zisserman, A. (2003). Multiple view geometry in computer vision. Cambridge: University Press. Ma, Y., Soatto, S., Košecká, J., & Sastry, S. (2006). An invitation to 3-D vision: From images to geometric models. New York: Springer.
Matlab code
im = iread('/path/to/image.jpg');
idisp(im); // special display for the course from the vision package
im = iread('monalisa.png', 'grey', 'double'); // 0.0 - 1.0 instead of 0 - 255
about(im);
Compare this
a = 100;
b = 200;
a+b
a-b
a/b
a = uint8(100);
b = uint8(200);
a+b
a-b
a/b
Getting an image from videocamera. Grab and display a image from the camera.
cam = VideoCamera(0);
im = cam.grab();
clear cam // In order to turn the camera off, use the clear function.
Getting an image from movie.
cam = Movie('traffic_sequence.mpg');
cam.grab(); // next sequence image
Creating an image from code
Create a 200x200 matrix of zeros (representing black) and set the first (top, left) element to 1 (representing white). Display the image.
im = zeros(200, 200);
im(1,1) = 1;
idisp(im)
im(150:160,60:70) = 0.5;
idisp(im)
circle = kcircle(30);
idisp(circle)
im = ipaste(im, circle*0.7, [100 30]);
idisp(im)
im = iline(im, [30 40], [150 190], 0.9);
idisp(im)
im = testpattern('rampx', 200);
idisp(im)
im = testpattern('squares', 200, 50, 25);
im = iread('monalisa.png', 'grey');
about im
idisp(im)
im(194,276)
ans = 26
im2 = im(180:210,260:290);
idisp(im2)
lin = im(190,260:290);
plot(lin)
im3 = im(1:4:end,1:4:end);
idisp(im3)
im4 = im(end:-1:1,1:end);
idisp(im4)
Thresholding
im = iread('penguins.png', 'grey', 'double');
idisp(im)
figure
ihist(im)
b = im > 0.45;
figure
idisp(b)
// Use the slider to adjust the threshold setting.
ithresh(im)
Diadic Operations
cam = Movie('traffic_sequence.mpg', 'double', 'grey'); // double is important, because uint8 can't do e.g. 50 - 65
// Extract the first and second frames from the movie.
im1 = cam.grab();
im2 = cam.grab();
// Display the image difference.
idisp(im1-im2)
idisp(im1-im2, 'invsigned') // colors: red / blue for positive / negative values