1 / 24

Matlab Image Processing

Matlab Image Processing. 046746. Data Types Image Representation Image/Video I/O Matrix access Image Manipulation MEX - MATLAB Executable Data Visualization General Tips Tricks. Topics. Relevant data types double – default in most cases single uint8 – [0 255]

ima
Download Presentation

Matlab Image Processing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MatlabImage Processing 046746

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

  3. Relevant data types • double – default in most cases • single • uint8 – [0 255] • uint16 – [0 65,535] • Logical – [0 1] • Simple casting: double(), uint8(). • Useful when displaying images with a dynamic range not corresponding to its actual type. • Conversion: im2double(),im2uint8(),lab2double(),lab2uint8() Data Types

  4. I = imread('world.jpg'); I2 = I-1.4; diffI = I-I2; fprintf('Max difference between images: %d\n',max(diffI(:))); figure(1); subplot(1,2,1); imshow(I); title('I'); subplot(1,2,2); imshow(I2); title('I2'); Max difference between images: 1 Common problem

  5. I = double(imread('world.jpg')); I2 = I-1.4; diffI = I-I2; fprintf('Max difference between images: %2.1f\n',max(diffI(:))); figure(1); subplot(1,2,1); imshow(I); title('I'); subplot(1,2,2); imshow(I2); title('I2'); Max difference between images: 1.4 Common problem

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

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

  8. 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(). Image Representation

  9. Useful Commands • imread() – read image • imwrite() – write image • im2fram() – convert image to movie frame • movie2avi() – write avi file • aviread() – read avi file • mmreader()/VideoReader() – read video (better) • movie() – show movie Image/Video I/O

  10. Useful Commands: • sub2ind()– convert subscript (e.g. (r,c,clr)) to index (n). • Ind2sub() – convert index (n) to subscipt (e.g. (r,c,clr)). • meshgrid() – generate X,Y grids. Matrix access

  11. 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-)destinct blocks. • fspecial() – Create common image filter kernals. • imresize() – Resize image using defined interpolation. • kron() – Kronecker tensor product • padarray() – Pad image. • colfilt() – Colum-stack filtering (faster) • imfreehand()- Select region with mouse Image Manipulation

  12. 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. MEX - MATLAB Executable

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

  14. 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 General Tips

  15. 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. General Tips

  16. Stenography (Wikipedia) The art of hiding a message within another larger message ? Tricks

  17. Stenography (Wikipedia) The art of hiding a message within another larger message 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'); Tricks

  18. Almost Connected (Steve Eddins’ Blog) Tricks

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

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

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

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

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

  24. Feature AND (Steve Eddins’ Blog) out = imreconstruct(touching_pixels, bw); Tricks

More Related