Presentation is loading. Please wait.

Presentation is loading. Please wait.

Advanced MATLAB 046746. Topics Data Types Image Representation Image/Video I/O Matrix access Image Manipulation MEX - MATLAB Executable Data Visualization.

Similar presentations


Presentation on theme: "Advanced MATLAB 046746. Topics Data Types Image Representation Image/Video I/O Matrix access Image Manipulation MEX - MATLAB Executable Data Visualization."— Presentation transcript:

1 Advanced MATLAB 046746

2 Topics Data Types Image Representation Image/Video I/O Matrix access Image Manipulation MEX - MATLAB Executable Data Visualization General Tips Tricks

3 Data Types Relevant data types double – default in most cases (usually 64 bit) single – when you want to save memory (usually 32 bit) uint8 – [0 255] – native for images uint16 – [0 65,535] Logical – [0 1] – native for masks Simple casting: double(), uint8(). Useful when displaying images with a dynamic range not corresponding to its actual type. Conversion (of images): im2double(),im2uint8(),lab2double(),lab2uint8() rgb2ind(),ind2rgb(),makecform()

4 I = imread('world.jpg'); I2 = I-1.4; diffI = I-I2; fprintf('Max difference between images: %d\n',max(diffI(:))); I = imread('world.jpg'); I2 = I-1.4; diffI = I-I2; fprintf('Max difference between images: %d\n',max(diffI(:))); Common problem fprintf('Max difference between images: %2.1f\n',max(diffI(:))); Max difference between images: 1.4 Max difference between images: 1 display([ 'Max difference between images: ' num2str( max(diffI(:)) ) ]); A much better practice is: Max difference between images: 1.4

5 Image Representation 2D Matrix Intensity: Each pixel value in the dynamic range [minP, maxP]. Can represent a grayscale image, results of a 2d function, etc. Useful commands: imagesc(), axis, colormap(). Binary: a.k.a masks. Can represent absolute ground truth, etc. Useful commands: bwlabel(),bwmorph(),bwdist(),im2bw(),bwperim().

6 Image Representation 2D Matrix Indexed: Each pixel value in the range [minP, maxP]. Can represent segmentation. Useful commands: regionprops(),label2rgb()

7 Image Representation 3D Matrix True Color: Three 2D matrices stacked. Each represents a color component. (e.g. RGB) Can represent an RGB color image, LAB image, etc. Useful commands: imshow(),rgb2gray(),rgb2ind().

8 Image/Video I/O Useful Commands imread() – read image imwrite() – write image im2frame() – convert image to movie frame movie2avi() – write avi file aviread() – read avi file mmreader()/VideoReader() – read video (better) VideoWriter() – create video file (2011b+) movie() – show movie implay() – show video interactively

9 Matrix access Useful Commands: Ind = sub2ind(matrixSize, rowSub, colSub) convert subscript to index. [I,J] = ind2sub(siz,IND) – convert index to subscipt. meshgrid() – generate X,Y grids. F = scatteredInterpolant(x,y,v) - creates an interpolant that fits a surface of the form v = F(x,y). (replaced TriScatteredInterp)xyv

10 Image Manipulation Useful Commands: imcrop()– Useful for interactive cropping. imrotate()– Rotate image. imfilter() – Use kernal to convolve/correlation. nlfilter() – Sliding neighborhood operation. blkproc() – Perform function on (semi-)distinct blocks. fspecial() – Create common image filter kernels. imresize() – Resize image using defined interpolation. kron() – Kronecker tensor product padarray() – Pad image. colfilt() – Colum-stack filtering (faster) imfreehand()- Select region with mouse

11 MEX - MATLAB Executable Dynamically linked subroutines produced from C, C++ or Fortran source code. Useful when dealing with non efficient-Matlab algorithms (e.g. iterative algorithm implemented as loops). mex –setup : Setup mex compiling configurations.

12 Data Visualization Useful Commands: scatter()/plot() – Useful to plot points on image. imagesc() – Useful for 2D data. print() – Save figure as image on disk (careful with lossy compressions)

13 General Tips Avoid loops Manage memory (Clear unused variables) Useful command: clearvars() Avoid memory duplication – use nested functions function myfun A = magic(500); function setrowval(row, value) A(row,:) = value; end setrowval(400, 0); disp('The new value of A(399:401,1:10) is') A(399:401,1:10) end

14 General Tips Avoid memory duplication – don’t want to use nested functions? Simply use the same variable name: function x = demo x=rand(10000); x=func(x); function a=func(a) a=a*2;

15 General Tips Preallocating Arrays Preallocate correctly tic x = 0; for k = 2:1000000 x(k) = x(k-1) + 5; end toc Elapsed time is 0.301528 seconds. tic x = zeros(1, 1000000); for k = 2:1000000 x(k) = x(k-1) + 5; end toc Elapsed time is 0.011938 seconds. A = int8(zeros(100)); A = zeros(100, 'int8');

16 General Tips You will be amazed of the variety of built in functions that Matlab offers. In fact, assume that the function you need is built in Matlab. It’s probably true! Use Matlab “help” to understand how to use functions Use Google to search for new functions!

17 General Tips Long-Term Usage (Windows Systems Only) On 32-bit Microsoft Windows, the workspace of MATLAB can fragment over time due to the fact that the Windows memory manager does not return blocks of certain types and sizes to the operating system. Clearing the MATLAB workspace does not fix this problem. You can minimize the problem by allocating the largest variables first. This cannot address, however, the eventual fragmentation of the workspace that occurs from continual use of MATLAB over many days and weeks, for example. The only solution to this is to save your work and restart MATLAB. The pack command, which saves all variables to disk and loads them back, does not help with this situation.pack Long-Term Usage (Windows Systems Only) On 32-bit Microsoft Windows, the workspace of MATLAB can fragment over time due to the fact that the Windows memory manager does not return blocks of certain types and sizes to the operating system. Clearing the MATLAB workspace does not fix this problem. You can minimize the problem by allocating the largest variables first. This cannot address, however, the eventual fragmentation of the workspace that occurs from continual use of MATLAB over many days and weeks, for example. The only solution to this is to save your work and restart MATLAB. The pack command, which saves all variables to disk and loads them back, does not help with this situation.pack

18 Tricks Stenography (Wikipedia) The art of hiding a message within another larger message

19 Tricks I= imread('StenographyOriginal.png'); I4=85*mod(I,4); figure; subplot(1,2,1) imshow(I); title('Original'); subplot(1,2,2) imshow(I4);title('Result'); I= imread('StenographyOriginal.png'); I4=85*mod(I,4); figure; subplot(1,2,1) imshow(I); title('Original'); subplot(1,2,2) imshow(I4);title('Result'); Stenography (Wikipedia) The art of hiding a message within another larger message

20 Tricks Almost Connected (Steve Eddins’ Blog)

21 Tricks url = 'http://blogs.mathworks.com/images/steve/2010/blobs_in_clumps.png'; bw = imread(url); lbl = bwlabel(bw); figure; imagesc(lbl); axis image; url = 'http://blogs.mathworks.com/images/steve/2010/blobs_in_clumps.png'; bw = imread(url); lbl = bwlabel(bw); figure; imagesc(lbl); axis image; Almost Connected (Steve Eddins’ Blog)

22 Tricks bw2 = bwdist(bw) <= 12.5; lbl2 = bwlabel(bw2); figure; imshow(bw2); figure; imagesc(lbl2); axis image; bw2 = bwdist(bw) <= 12.5; lbl2 = bwlabel(bw2); figure; imshow(bw2); figure; imagesc(lbl2); axis image; Almost Connected (Steve Eddins’ Blog)

23 Tricks lbl3 = lbl2.*bw; figure; imagesc(lbl3); axis image; lbl3 = lbl2.*bw; figure; imagesc(lbl3); axis image; Almost Connected (Steve Eddins’ Blog)

24 Tricks bw = imread('text.png'); dots = rand(size(bw))>0.99; bw = imread('text.png'); dots = rand(size(bw))>0.99; Feature AND (Steve Eddins’ Blog)

25 Tricks touching_pixels = bw & dots; Feature AND (Steve Eddins’ Blog)

26 Tricks out = imreconstruct(touching_pixels, bw); Feature AND (Steve Eddins’ Blog) out = imreconstruct(dots, bw); Of course this will work just as well:


Download ppt "Advanced MATLAB 046746. Topics Data Types Image Representation Image/Video I/O Matrix access Image Manipulation MEX - MATLAB Executable Data Visualization."

Similar presentations


Ads by Google