Professional Documents
Culture Documents
046746
*Data Types
*Image Representation
*Image/Video I/O
*Matrix access
*Image Manipulation
*MEX - MATLAB Executable
*Data Visualization
*General Tips
*Tricks
*
*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()
*
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');
*
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');
*
2D Matrix
*
2D Matrix
*
3D Matrix
*
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
*
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.
*
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
*
* 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).
*
Useful Commands:
*
* Avoid loops
* Manage memory (Clear unused variables)
* Useful command: clearvars()
* Avoid memory duplication – use nested functions
function myfun
A = magic(500);
setrowval(400, 0);
disp('The new value of A(399:401,1:10) is')
A(399:401,1:10)
end
*
Long-Term Usage (Windows Systems Only)
*
Stenography (Wikipedia)
The art of hiding a message within another larger message
Original Result
*
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');
*
Almost Connected (Steve Eddins’ Blog)
*
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;
50
100
150
200
250
300
*
50 100 150 200 250 300
Almost Connected (Steve Eddins’ Blog)
bw2 = bwdist(bw) <= 12.5;
lbl2 = bwlabel(bw2);
figure; imshow(bw2);
figure; imagesc(lbl2); axis image;
50
100
150
200
250
300
*
Almost Connected (Steve Eddins’ Blog)
lbl3 = lbl2.*bw;
figure;
imagesc(lbl3); axis image;
50
100
150
200
250
300
*
Feature AND (Steve Eddins’ Blog)
bw = imread('text.png');
dots = rand(size(bw))>0.99;
*
Feature AND (Steve Eddins’ Blog)
touching_pixels = bw & dots;
Overlapping
*
Feature AND (Steve Eddins’ Blog)
out = imreconstruct(touching_pixels, bw);
Reconstructed