Operatori Morfologici - UNISA V... · 12/05/16 Introduzione a Matlab 2 Operatori Morfologici •...

22
12/05/16 Introduzione a Matlab 1 Introduzione a Matlab Operatori Morfologici Fondamenti di Visione Artificiale a.a. 2015/2016

Transcript of Operatori Morfologici - UNISA V... · 12/05/16 Introduzione a Matlab 2 Operatori Morfologici •...

12/05/16 Introduzione a Matlab 1

Introduzione a Matlab

OperatoriMorfologici

Fondamenti diVisione Artificiale

a.a. 2015/2016

12/05/16 Introduzione a Matlab 2

Operatori Morfologici

• Dilation: The value of the output pixel is the maximum value of all the pixels in the input pixel's neighborhood. In a binary image, if any of the pixels is set to the value 1, the output pixel is set to 1.

• Erosion: The value of the output pixel is the minimum value of all the pixels in the input pixel's neighborhood. In a binary image, if any of the pixels is set to 0, the output pixel is set to 0.

Dilation on a Binary Image

Dilation on a Grayscale Image

12/05/16 Introduzione a Matlab 3

Dilation

• The 3×3 square is probably the most common structuring element used in dilation operations, but others can be used. A larger structuring element produces a more extreme dilation effect, although usually very similar effects can be achieved by repeated dilations using a smaller but similarly shaped structuring element.

12/05/16 Introduzione a Matlab 4

Dilation% DILATAZIONE

% Carichiamo l'immagineA = imread('Quadrato.tif');

% convertiamo l'immagine in doubleA = double(A);

% rappresentiamo l'immaginefigure(1);imshow(uint8(A));

% applichiamo una operazione di dilatazione una volta

B = operazione_dilate(A, 1);

% rappresentiamo l'immagine risultatofigure(2);imshow(uint8(B));

% applichiamo una operazione di dilatazione 20 volte

C = operazione_dilate(A, 10);

% rappresentiamo l'immagine risultatofigure(3);imshow(uint8(C));

% osserviamo cosa è successo all'immagine mediante una operazione di differenza

D = operazione_differenza(A, B);figure(4);imshow(uint8(D));

12/05/16 Introduzione a Matlab 5

Erosion

• The 3×3 square is probably the most common structuring element used in erosion operations, but others can be used. A larger structuring element produces a more extreme erosion effect, although usually very similar effects can be achieved by repeated erosions using a smaller similarly shaped structuring element.

12/05/16 Introduzione a Matlab 6

Erosion% EROSIONE

% Carichiamo l'immagineA = imread('Quadrato.tif');

% convertiamo l'immagine in doubleA = double(A);

% rappresentiamo l'immaginefigure(5);imshow(uint8(A));

% applichiamo una operazione di dilatazione una volta

B = operazione_erode(A, 1);

% rappresentiamo l'immagine risultatofigure(6);imshow(uint8(B));

% applichiamo una operazione di dilatazione 20 volte

C = operazione_erode(A, 10);

% rappresentiamo l'immagine risultatofigure(7);imshow(uint8(C));

% osserviamo cosa è successo all'immagine mediante una operazione di differenza

F = operazione_differenza(A, B);figure(8);imshow(uint8(F));

12/05/16 Introduzione a Matlab 7

Open

• As with erosion and dilation, it is very common to use this 3×3 structuring element. The effect in the above figure is rather subtle since the structuring element is quite compact and so it fits into the foreground boundaries quite well even before the opening operation.

• 'open' implements binary opening (erosion followed by dilation).

12/05/16 Introduzione a Matlab 8

Open% APERTURA% Carichiamo l'immagineA = imread('Open.jpg');

% convertiamo l'immagine in doubleA = double(A);

% rappresentiamo l'immaginefigure(1);imshow(uint8(A));

% applichiamo una operazione di dilatazione una volta

B = operazione_open(A);

% rappresentiamo l'immagine risultatofigure(2);imshow(uint8(B));

% osserviamo cosa è successo all'immagine mediante una operazione di differenza

D = operazione_differenza(A, B);figure(3);imshow(uint8(D));

12/05/16 Introduzione a Matlab 9

Close

• As with erosion and dilation, this particular 3×3 structuring element is the most commonly used, and in fact many implementations will have it hardwired into their code, in which case it is obviously not necessary to specify a separate structuring element.

• 'close' performs binary closure (dilation followed by erosion).

12/05/16 Introduzione a Matlab 10

Close% CHIUSURA% Carichiamo l'immagineA = imread('Text.tif');

% convertiamo l'immagine in doubleA = double(A);

% rappresentiamo l'immaginefigure(1);imshow(uint8(A));

% applichiamo una operazione di chiusura

B = operazione_close(A);

% rappresentiamo l'immagine risultatofigure(2);imshow(uint8(B));

% osserviamo cosa è successo all'immagine mediante una operazione di differenza

D = operazione_differenza(A, B);figure(3);imshow(uint8(D));

12/05/16 Introduzione a Matlab 11

Remove% REMOVE% Carichiamo l'immagineA = imread('remove.jpg');

% convertiamo l'immagine in doubleA = double(A);

% rappresentiamo l'immaginefigure(1);imshow(uint8(A));

% applichiamo una operazione di remove

B = operazione_remove(A);

% rappresentiamo l'immagine risultatofigure(2);imshow(uint8(B));

% osserviamo cosa è successo all'immagine mediante una operazione di differenza

D = operazione_differenza(A, B);figure(3);imshow(uint8(D));

Cosa è successo all’immagine remove.jpg?

12/05/16 Introduzione a Matlab 12

12/05/16 Introduzione a Matlab 13

Skeletization

• Skeletonization is a process for reducing foreground regions in a binary image to a skeletal remnant that largely preserves the extent and connectivity of the original region while throwing away most of the original foreground pixels.

12/05/16 Introduzione a Matlab 14

SKELETIZATION% SCHELETRIZZAZIONE% Carichiamo l'immagineA = imread('stelle.tif');

% convertiamo l'immagine in doubleA = double(A);

% rappresentiamo l'immaginefigure(1);imshow(uint8(A));

B = operazione_negativo(A);figure(2);imshow(uint8(B));

% applichiamo una operazione di scheletrizzazioneC = operazione_skel(B, 50);figure(3);imshow(uint8(C));

D = operazione_negativo(255*double(C));

% rappresentiamo l'immagine risultatofigure(4);imshow(uint8(D));

% osserviamo cosa è successo all'immagine mediante una operazione di somma

E = operazione_somma(A, D);figure(5);imshow(uint8(E));

12/05/16 Introduzione a Matlab 15

WatershedOriginal Sand image.

Watershed result.

Thresholded (value=70).

Superimposed on original.

Watershed segmentation is a method for separating essentially convex and relatively smooth features that touch slightly.

12/05/16 Introduzione a Matlab 16

Watershed% WATERSHEDA = imread('riso.tif');figure;imshow(A, []);

% visualizziamo l'istogramma dell'immaginefigure;imhist(A);

% effettuiamo una operazione di sogliaB = operazione_soglia(A, 30);figure;imshow(B, []);

% effettuiamo il negativo dell'immagine soglia per poter applicare l'operatore di watersheed

C = operazione_negativo(B);figure;imshow(C, []);

% applichiamo loperatore di watershedD = new_watershed(C);figure;imshow(D, []);

F = operazione_somma(A, D);figure;imshow(F, []);

12/05/16 Introduzione a Matlab 17

bwmorphGli operatori morfologici in MATLAB sono implementati dalla funzione:

B = bwmorph(A, ‘operation’);B = bwmorph(A, ‘operation’, n);

'branchpoints'

Cerca configurazioni di 1 disposti a croce:

0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 diventa 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0

Il parametro ‘operation’ può assumere diversi valori:

12/05/16 Introduzione a Matlab 18

bwmorph

bridge'

Cerca gruppi di pixel e congiunge cambiando uno 0 in 1:

1 0 0 1 1 0 1 0 1 diventa 1 1 1 0 0 1 0 1 1

'clean'

Elimina punti isolati.

0 0 0 0 1 0 0 0 0

'fill'

Riempie posizioni vuote.1 1 1 1 0 1 1 1 1

12/05/16 Introduzione a Matlab 19

Esercizio I

• Data l'immagine Quadrato.tif, estrarre il contorno della figura utilizzando gli operatori morfologici.

12/05/16 Introduzione a Matlab 20

Esercizio II

• Data l'immagine Palline.tif, separare le palline all'interno dell'immagine.

• Successivamente delineare i contorni delle sfere utilizzando un operatore morfologico

12/05/16 Introduzione a Matlab 21

Esercizio III

• Data l'immagine Text.tif, ottenere la scritta in grassetto con un operatore morfologico.

12/05/16 Introduzione a Matlab 22

Esercizio IV

Data l'immagine Palline.tif:

• 1) Isolare le palline mediante il filtro Watershed

• 2) Cerchiare le palline mediante un operatore morfologico