MATLAB will be used for the MPV labs. In case you are not familiar with matlab, study the following parts of the "Getting started with MATLAB (MathWorks)":
(home study)
Other useful tutorial is:
G=gauss(x,sigma)
that computes values of a (1D) Gaussian with zero mean and variance $\sigma^2$:x
.
D=dgauss(x,sigma)
that returns the first derivative of a Gaussianx
.
conv2
.
sigma = 6.0; x = [-ceil(3.0*sigma):ceil(3.0*sigma)]; G = gauss(x, sigma); D = dgauss(x, sigma); imp = zeros(49); imp(25,25) = 1.0; out = conv2(D, G, imp, 'same'); ... imagesc(out); % or surf(out);try to find out impulse responses of other combinations of the Gaussian and its derivatives.
out=gaussfilter(in,sigma)
that implements smoothing of an input image in with a Gaussian filter of width 2*ceil(sigma*3.0)+1
and variance $\sigma^2$ and returns the smoothed image out (e.g. Lena). Exploit the separability property of Gaussian filter and implement the smoothing as two convolutions with one dimensional Gaussian filter (see function conv2
).
[dx,dy]=gaussderiv(in,sigma)
that returns the estimate of the gradient (gx, gy) in each point of the input image in (MxN matrix) after smoothing with Gaussian with variance $\sigma^2$. Use either first derivative of Gaussian or the convolution and symmetric difference to estimate the gradient.
[dxx,dxy,dyy]=gaussderiv2(in,sigma)
that returns all second derivatives of input image in (MxN matrix) after smoothing with Gaussian of variance $\sigma^2$.
out=affinetr(in,A,ps,ext)
that warps a patch from image in (MxN matrix) into canonical coordinate system. Affine transformation matrix A (3×3 elements) is a transformation matrix from the canonical coordinate system into image from previous task. The parameter ps defines the dimensions of the output image (the length of each side) and ext is a real number that defines the extent of the patch in coordinates of the canonical coordinate system. E.g. out=affinetr(in,A,41,3.0)
, returns the patch of size 41×41 pixels that corresponds to the rectangle (-3.0,-3.0)x(3.0,3.0) in the canonical coordinate system. Top left corner of the image has coordinates (0,0). Use bilinear interpolation for image warping. Check the functionality on this image.
Upload all the Matlab functions implemented in this lab: gauss.m
, dgauss.m
, gaussfilter.m
, gaussderiv.m
, gaussderiv2.m
, affine.m
and affinetr.m
into the upload system in a .zip archive. Keep all functions in the root of the .zip archive together with all helper functions required. Follow closely the specification and order of the input/output arguments.
Geometric transformations - hierarchy of transformations, homogeneous coordinates
Geometric transformations - review of course Digital image processing
You can check results of the functions required in this lab using the Matlab function publish. Copy the test script test.m into MATLAB path (directory with implemented functions) a run. Compare your results to the reference solution.