Robotic Vision: Rozdiel medzi revíziami
Zo stránky SensorWiki
| Riadok 174: | Riadok 174: | ||
| <source lang="matlab"> | <source lang="matlab"> | ||
|   K = kgauss(5, 15); |   K = kgauss(5, 15); | ||
|   % Display the kernel a greycale image. | |||
|   idisp(K) |   idisp(K) | ||
|   figure |   figure | ||
|   surf(K) |   surf(K) | ||
|   % Load the Mona Lisa image and correlate this with the Gaussian kernel. Display the image. | |||
|   im = iread('monalisa.png', 'grey', 'double'); |   im = iread('monalisa.png', 'grey', 'double'); | ||
|   s = iconv(K, im); |   s = iconv(K, im); | ||
Verzia z 23:38, 23. november 2015
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
Spatial operators: Moving average
  % Load the Mona Lisa image.
  im = iread('monalisa.png', 'grey', 'double');
  %  Perform an average over a 7x7 window by 
  %  correlating the image with a 7x7 matrix of 1's using the 
  %  toolbox function iconv(). Display with the original image.
  s7 = iconv(im, ones(7,7));
  idisp(im)
  figure(2)
  idisp(s7)
 
  % again with 21x21 window. 
  s21 = iconv(im, ones(21,21));
  idisp(s21)
Introducing kernels
Create a Gaussian kernal with a standard deviation of 5 and a half radius of 15 pixels using the kgauss() function.
 K = kgauss(5, 15);
 % Display the kernel a greycale image.
 idisp(K)
 figure
 surf(K)
 % Load the Mona Lisa image and correlate this with the Gaussian kernel. Display the image.
 im = iread('monalisa.png', 'grey', 'double');
 s = iconv(K, im);
 idisp(s)
Edges
 // Load the penguins.jpg image and display.
 im = iread('penguins.jpg','grey','double');
 idisp(im)