Image processing 7
Example 1
Structural elements that can be used in morphological operations:
se1=strel('pair',[3,-2]); % displacement against the central pixel for a vector [3,-2]
figure; imshow(getnhood(se1),'notruesize');
se2=strel('line',10,60); % number of pixels, angle towards x axis
figure; imshow(getnhood(se2),'notruesize');
se3=strel('disk',10); % radius
figure; imshow(getnhood(se3),'notruesize');
se4=strel('diamond',3); % radius
figure; imshow(getnhood(se4),'notruesize');
se5=strel('periodicline',2,[-2,1]); % twice, displacement for a vector [-2,1]
figure; imshow(getnhood(se5),'notruesize');
se6=strel('ball',15,3); % circle radius
figure; imshow(getnhood(se4),'notruesize');
ss=getheight(se4);
ss(isinf(ss))=0;
figure; imshow(mat2gray(ss),'notruesize');
Example 2
Binary image erosion:
L=imread('bacteria.bmp');
figure; imshow(L);
SE=ones([3, 3]);
E=imerode(L,SE);
figure; imshow(E)
L2=L-E; % a difference between the source image and the eroded one (pixels that
have been removed)
figure; imshow(L2);
Exercise 1
Function ‘imdilate’ allows making image dilation. Please use this function for the image
“bacteria.bmp” (binarize image before). Then, show pixels that have been removed.
Exercise 2
Try to use another structural element size, for example 3x1. Conduct the operation five
times.
Exercise 3
Make erosion and dilation using any grayscale and colourful image. The result will be
more visible if we repeat the operation several times
Example 4
Using dilation and erosion for objects edges detection:
[L1] = imread('bacteria.bmp');
%L1=rgb2gray(L1);
figure; imshow(L1);
SE=ones(3);
gradL1=(imdilate(L1,SE)-imerode(L1,SE));
figure; imshow(gradL1,[]);
[L1] = imread('bacteria.bmp');
%L1=rgb2gray(L1);
figure; imshow(L1);
SE=ones(3);
laplaceL1=(imdilate(L1,SE)+imerode(L1,SE)-2*L1);
figure; imshow(laplaceL1,[]);
Example 5
Closing operation made for a binarized image:
L1 = imread('bacteria.bmp');
L1=L1>128;
figure; imshow(L1);
SE=ones(3);
L2=imclose(L1,SE);
figure; imshow(L2);
Exercise 4
For the same image, please, conduct the operation of opening (‘imopen’) and compare
the results (with example 5). Show the difference of these images.
Exercise 5
Please, check the results of opening and closing for grayscale and colour images. Try
to use another structural element. Show the difference between the resulting images.
Example 6
Grayscale image thinning (different size of structural element):
L1=imread('vessels.jpg');
L1=(L1)<150;
figure; imshow(L1);
L2a=bwmorph(L1,'shrink',5);
figure; imshow(L2a);
L2b=bwmorph(L1,'shrink',10);
figure; imshow(L2b);
L2c=bwmorph(L1,'shrink',40);
figure; imshow(L2c);
Exercise 6
Thinning can be executed also by employing “thin” function, and thickening – using
“thicken”. The structural element size is defined as above. Please, try to use these
functions for the image “drawing.bmp”.
Example 7
Image skeletonization with “branches” cutting and elimination of the isolated pixels:
L1=imread('vessels.jpg');
L1=(L1)<150;
figure; imshow(L1);
L2=bwmorph(L1,'skel',Inf);
figure; imshow(L2);
L3=bwmorph(L2,'spur',Inf);
figure; imshow(L3);
L4=bwmorph(L3,'clean',Inf);
figure; imshow(L4);
Exercise 7
„Bwmorph” enables to conduct several operations, for example: 'bridge' (joining
pixels with the bridge), 'hbreak' (removing of junctions in the shape of H letter),
'remove' (inner pixels removing), 'fill’ (1-pixel holes filling or isolated black pixels
removing). Please try to use this function with different arguments. Use images
“drawing.bmp” and “vessels. jpg”.
Example 8
Contours detection:
[L1]=imread('cells1.bmp');
L1=L1<180;
figure; imshow(L1);
SE=ones([3,3]);
E=imerode(L1,SE);
L2=L1-E;
figure; imshow(L2);
Another way:
L3 = bwperim(L1,8); % neighbourhood type
figure; imshow(L3)
Exercise 8
Please, try to find contours in any image with distinct edges, for example
„Krakow_3.jpg”.
Example 9
Detection of pixels exact configuration (here: horizontal lines, 10 pixels long):
L1=imread('drawing.bmp');
figure; imshow(L1);
SE=ones([1 10]);
L2=bwhitmiss(L1,SE);
figure; imshow(L2);
Example 10
In the “hit-and-miss” operation the structural element has mixed character. While
construct it, remember, that:
• pixels, that should be hit (pixels of an object) should be marked with 1
• pixels, that should be missed (pixels of a background) should have value of -1
• pixels, that are not taken into consideration (insignificant) – are marked with 0.
In the example below, the structural element was used that indicates object’s corners.
x 1 x
0 1 1
0 0 x
L1=imread('vessels1.bmp');
figure; imshow(L1, 'notruesize');
SE=[0,1,0;-1,1,1;-1,-1,0]
L2=bwhitmiss(L1,SE);
figure; imshow(L2, 'notruesize');
Exercise 9
Try to find different pixels’ configurations employing “hit-and-miss” structural element.
Use any binary image with low resolution.