You are on page 1of 30

Uso della Logica Fuzzy

nellElaborazione delle Immagini


Introduzione :
Insieme,
Funzione di Appartenenza,
Grado di Appartenenza,
Concetto Fuzzy
Teoria degli Insieme Fuzzy
Definizione Inisieme Fuzzy
Crisp = Fuzzy ?
Operazioni Fuzzy Logiche
Insieme Vuoto,
Uguaglianza,
Complemento,
Sottoinsieme,
Unione,
Intersezione,
Esempio di Operazioni
Funzione di Appartenenza
Triangolare,Trapeziodale,Sigma,S-Shape,Bell-
Shape,Truncated Gaussian
Utilizzo della Logica Fuzzy
Fuzzificazione,
Formalizzazione,
Implicazione,
Aggregazione,
Defuzzificazione,
Doppia Premessa,
Generalizzazione,
Regola ELSE
Fuzzy Contrast Enhancement
Fuzzy Spatial Filtering
Come ben noto un Insieme definito come
Questo tipo di insieme anche detto Crisp
Set o Insieme Crisp.
Il punto centrale della teoria degli insieme la
nozione di Appartenenza ad un insieme.
Qualunque aggregato (o collezione) di oggetti
per il quale sia sempre possibile decidere se
un generico oggetto appartiene oppure no
all'aggregato stesso.
Qualunque aggregato (o collezione) di oggetti
per il quale sia sempre possibile decidere se
un generico oggetto appartiene oppure no
all'aggregato stesso.
Nel caso di insiemi Crisp il concetto di
appartenenza ad un insieme si riferisce
unicamente al condizione VERO FALSO,
che nella teoria Booleana corrisponde a 1 0
(dove 1 = Vero; 0 = Falso).
Esempio:
Supponiamo di aver un insieme Z di persone
e vogliamo determinare un suo sottoinsieme
definito come Insieme delle persone
giovani in Z.
Per poter chiaramente definire questo
sottoinsieme occorre definire la funzione di
appartenenza allinsieme A tale che :
In questo caso significa stabilire un soglia Th
sullet delle persone da includere
nellinsieme.
{ } 1 ) ( | = = z Z z A
A

Quindi la nostra funzione di appartenenza


sar cos definita:
Per esempio se
fissiamo Th=20
otteniamo il
seguente grafico:


=
altrimenti
Th z se
z
A
0
0 1
) (
0 10 20 30 40 50
0.5
0
1
G
r
a
d
o

d
i

A
p
p
a
r
t
e
n
e
n
z
a

A
(z)
Et (z)
...
subito chiaro che, nel caso di una persona
la cui et di 20 anni e 1 secondo, questa
non appartiene allinsieme delle persone
giovani.
quindi necessario riformulare il concetto di
persona giovane in modo pi soft, ovvero
graduale.
Una possibile soluzione illustrata nel
seguente grafico, il quale presenta una
transizione graduale da giovane a non
giovane.
0 10 20 30 40 50
0.5
0
1
G
r
a
d
o

d
i

A
p
p
a
r
t
e
n
e
n
z
a

A
(z)
Et (z)
...
Il punto chiave di questa funzione sta nel fatto che
composta da infiniti valori che permettono di stabilire il
Grado di Appartenenza;
In questo modo possibile definire una persona pi o
meno giovane allinterno del nostro insieme.
0 10 20 30 40 50
0.5
0
1
G
r
a
d
o

d
i

A
p
p
a
r
t
e
n
e
n
z
a

A
(z)
Et (z)
...
Usando il grado di appartenenza allinsieme
possibile enunciare delle affermazione vaghe
come:
una persona di 15 anni giovane
una persona di 22 anni relativamente giovane
una persona di 27 anni non tanto giovane
Letteralmente tradotto il termine vago in inglese
Fuzzy.
Le affermazione sopra elencate sono espresse
secondo la Logica Fuzzy.
Gli insiemi cos generati sono detti Insiemi Fuzzy.
La teoria degli Inisiemi Fuzzy stata introdotta
pi di 40 anni fa da Lotfi Zadeh.
Zadeh L.A., Fuzzy Sets, Information
and Control, vol.8 (1965) pp. 338-353
Gli Insiemi Fuzzy permettono di sviluppare il
formalismo necessario alla gestione di
informazioni imprecise.
Sia dato un insieme Z di oggetti, con z generico
elemento di Z, un Insieme Fuzzy A in Z
caratterizzato da una funzione di appartenenza

A
(z) che associa ad ogni elemento di Z un
numero reale nel intervallo [0,1].
Il valore di
A
(z) rappresenta il Grado di
Appartenenza di z in A.
Mentre il significato di appartenenza ad un
insieme Crisp ben noto (si-no) nel insieme
Fuzzy per

A
(z)=1 diremo che z contenuto in A.

A
(z)=0 diremo che z non contenuto in A.
0<
A
(z) <1 diremo che z parzialmente
contenuto in A.
Dalle precedenti considerazioni si evince che un Insieme
Fuzzy composto da coppie ordinate di elementi del tipo:
Quando le variabili sono continue, linsieme A pu essere
composto da un numero infinito di elementi.
Quando le variabili sono discrete possibile esplicitare
tutti gli elementi dellinsieme A. Per esempio, nel caso
dellinsieme delle persone giovani, considerando solo gli
anni, abbiamo:
A={(1,1), (2,1), (3,1), , (20,1), (21,0.9), (22,0.8),, (25,0.5),(24,0.4),,(29,0.1)}
( ) { } Z z z z A
A
= | ) ( ,
Nel caso in cui
A
(z) assume unicamente i valori 0 o
1, la funzione di appartenenza riduce l'insieme
Fuzzy A ad un insieme Crisp.
Di conseguenza si deduce che gli Insiemi Crisp sono
casi speciali degli Insiemi Fuzzy.
Il viceversa ovviamente non vale.
0 10 20 30 40 50
0.5
0
1
G
r
a
d
o

d
i

A
p
p
a
r
t
e
n
e
n
z
a

A
(z)
Et (z)
...
Vediamo adesso come sono definite le
operazione "Fuzzy" logiche derivanti dalle
operazioni logiche tradizionali:
Insieme Vuoto: un insieme Fuzzy si definisce
vuoto se e solo se la sua funzione di
appartenenza indeticamente nulla in Z.
Uguglianza: due insiemi Fuzzy A e B si
definiscono uguali se e solo se, comunque si
consideri un elemento zZ,
A
(z) =
B
(z).
Sottoinsieme: un insieme Fuzzy A si
definisce sottoinsieme di un insieme Fuzzy B
se e solo se, comunque si consideri un
elemento zZ,
A
(z)
B
(z).
Complemento: si definisce complemento di
A, e si indica con A, oppure Not(A), l'insieme
Fuzzy tale che, comunque si consideri un
elemento zZ,
A
(z)= 1-
A
(z) .
Unione: l'unione di due insiemi Fuzzy A e B,
indicata con AUB oppure A OR B, composta
dall'insieme Fuzzy C la cui funzione di
appartenenza
C
(z)=max[
A
(z),
B
(z)],
comunque si consideri un elemento zZ.
Intersezione: l'intersezione di due insiemi
Fuzzy A e B, indicata con AB oppure A AND
B, composta dall'insieme Fuzzy C la cui
funzione di appartenenza
C
(z)=min[
A
(z),

B
(z)], comunque si consideri un elemento
zZ.
Questi esempi ci mostrano
chiaramente il
comportamento delle
operazioni logiche
applicate sulle funzioni di
appartenenza di due
insieme Fuzzy (A e B)
subito evidente che i
concetti di Complemento,
Unione e Intersezione
sono coerenti con i
concetti dellinsiemistica
classica.
0
1
G
r
a
d
o

d
i

A
p
p
a
r
t
e
n
e
n
z
a

A
(z)
z

B
(z)
0
1

A
(z) = 1 -
A
(z)
z
Complemento
0
1
z
0
1

U
(z)= max[
A
(z),
B
(z)]
z
Unione Intersezione

I
(z)= min[
A
(z),
B
(z)]
Vediamo adesso alcuni tipici esempi di
funzioni di appartenenza.
Triangolare:

+
<
=
altrimenti
c a z a c a z
a z b a b z a
z
0
/ ) ( 1
/ ) ( 1
) (
0
1
z
0.5

a-b a+c a
Trapeziodale:

+ <
<
<
=
altrimenti
d b z b d b z
b z a
a z c a c z a
z
0
/ ) ( 1
1
/ ) ( 1
) (
0
1
z
0.5

a-c b+d a b
Sigma:

<

=
altrimenti
a z
a z b a b z a
z
0
1
/ ) ( 1
) (
0
1
z
0.5

a-b a
S-Shape:
Pi frequentemente utilizzata per gli insiemi Fuzzy
Il punto z=b dove la curva cambia inflessione detto Punto
Di Crossover

>
< |

\
|

\
|

<
= =
c z
c z b
a c
a z
b z a
a c
a z
a z
c b a z S z
1
2 1
2
0
) , , ; ( ) (
2
2

0
1
z
0.5

a c b
Bell-Shape (Campana):
Per semplicit di rappresentazione stata usata la formula
della funzione S-Shape per semplificare la funzione Bell-
Shape
In questo caso b la Larghezza di Banda della curva.

> |

\
|
+ +
|

\
|

=
c z b c
b
c c z S
c z c
b
c b c z S
z
,
2
, ; 1
,
2
, ;
) (
0
1
z
0.5

c+b
b
c-b
c
Gaussiana Troncata
0
1
z
0.5

a+c
2b
a-c
a

+
=

altrimenti
c a z c a e
z
b
a z
0
) (
2
2
2
) (

0.607
Per meglio comprendere i passi necessari al utilizzo
della Logica Fuzzy risolveremo un esempio
concreto illustrando tutti i processi necessari.
Supponiamo di dover usare il colore di un certo
frutto per categorizzarlo in tre differenti gruppi:
Acerbo, Quasi-maturo e Maturo.
Da una serie di osservazione si stabilito che un
frutto Verde Acerbo, Giallo Giallo Quasi Quasi- -maturo maturo e
Rosso Maturo.
Ovviamente le etichette Verde, Giallo Giallo e
Rosso sono descrizioni Vaghe di tipi di
colore. Occorre quindi esprimerle in formato
Fuzzy.
Questo procedimento prende il nome di
FUZZIFICAZIONE
Al fine di applicare la fuzzificazione al nostro
problema, la funzione di appartenenza
definita come funzione dipendente dal colore.
Supponiamo, per comodit, che i colori Verde, Giallo Giallo e
Rosso abbiano lunghezze d'onda adiacenti nello
spettro della luce.
In questo contesto si dice
che il generico colore una
variabilelinguistica, e che
un colore fissato un valore
linguistico.
0
1

verde
(z)
z

rosso
(z)
0.5

giallo
(z)
Lunghezza donda del Colore
Sia fissato una valore linguistico, z
0
, la sua
fuzzificazione si ottiene considerando le funzioni di
appartenenza descritte per determinare il valore
(per ognuna delle funzioni) tra [0,1].
0
1

V
(z
0
)
z
0.5
z
0

G
(z
0
)

R
(z
0
)

Il problema finora analizzato deve essere sintetizzato


mediante delle Regole Fuzzy "IF-THEN"*:
R
1
: IF il colore Verde THEN la frutta Acerba
R
2
: IF il colore Giallo THEN la frutta Quasi-matura
R
3
: IF il colore Rosso THEN la frutta Matura
Queste regole, che rappresentano tutta la nostra
conoscenza sul problema considerato, non sono altro
che un formalismo del procedimento.
* La Regola IF-THEN composta da una premessa (IF) e da una
conseguenza (THEN).
Una volta noto l'input e le regole occorre stabilire la
natura dell'output del sistema. Questo step noto
come Implicazione.
Poich usiamo input di tipo Fuzzy, l'output sar
anch'esso di tipo Fuzzy. Quindi necessario definire
anche per l'output delle funzioni di appartenenza.
0
1

Acerbo
(z)
z

Maturo
(z)
0.5

Quasi
(z)
Maturit (%)
0 10 20 30 40 50 60 70 80 90 100
Implicazione
Considerando tutte le informazioni fornite, insieme alle regole
poste, abbiamo tutte le informazioni per collegare linput con
loutput.
In particolare se si considera lespressione IF il colore
Rosso THEN la frutta Matura occorre considerare
l'intersezione tra questi due. Poich le variabili sono
indipendenti il risultato sar descritto da una proiezione
bidimensionale.
0
1
z
0.5

Roso
(z) (z)
Colore
0
1
0.5

Maturit
(v) (v)
Maturazione
v
Implicazione
Per trovare il risultato
dellintersezione di Rosso e
Maturo, dalla definizione di
Intersezione di insiemi Fuzzy, si
considera il minimo tra i valori
della nuova funzione di
appartenenza
3
(z,v).

3
Poich si riferisce alle terza regola R
3
(z,v)
v
z

3
(z,v)
v
z
Rosso AND Maturo
{ } ) ( ), ( min ) , (
3
v z v z
Maturo Rosso
=
A questo punto siamo interessati a sapere il risultato
specifico in funzione di una determinata variabile di
input z
0.
Supponiamo che z
0
abbia un determinato valore di
appartenenza allinsieme Fuzzy Rosso:
Rosso
(z
0
).
Applicando loperazione AND tra loutput
Rosso
(z
0
) e

3
(z
0
,v), corrispondente alla applicazione della regola
R
3
in z
0
.
{ } ) , ( ), ( min ) (
0 3 0 3
v z z v Q
Rosso
=
Dove Q
3
indica loutput Fuzzy di R
3
in z
0
.
(z,v)
v
z
Rosso AND Maturo in z
0

3
(z
0
,v)

Rosso
(z
0
)
1
C
o
l
o
r
e
M
a
t
u
r
a
z
i
o
n
e
Q
3
(v)
Usando lo stesso procedimento per le regole
R
1
e R
2
otteniamo:
e
Ognuna di queste equazioni loutput
associato ad un particolare input z
0
.
{ } ) , ( ), ( min ) (
0 1 0 1
v z z v Q
Verde
=
{ } ) , ( ), ( min ) (
0 2 0 2
v z z v Q
Giallo
=
Per ottenere la risposta globale, si aggregano le
risposte individuali. Le tre regole sono aggregate
mediante loperazione OR.
Ovvero
Anche in questo caso siamo ancora in presenza di un
insieme Fuzzy.
3 2 1
OR OR Q Q Q Q =
{ } ( )
{ } { } rosso giallo verde s r
v z z v Q
r s
s r
, , e 3 , 2 , 1
) , ( ), ( min max ) (
0 0
= =
=
Riassumendo graficamente quanto detto finora
per la variabile z
0
abbiamo:
Da notare che Q
1
composto da tutti 0, quindi
identicamente nullo, e per come lo abbiamo
definito precedentemente Q
1
un Insieme Fuzzy
Vuoto.
0
1

V
(z
0
)
z
0.5
z
0

G
(z
0
)

R
(z
0
)
(z)

verde
(z)

rosso
(z)

giallo
(z)
0
1
Q
1
v
Q
3
0.5
Q
2
Maturazione (%)
0 10 20 30 40 50 60 70 80 90 100
0
1
v
0.5
Q
Maturazione (%)
0 10 20 30 40 50 60 70 80 90 100
(v)
(v)
Abbiamo completato il processo per ottenere
loutput a partire da uno specifico input.
Lultimo step quello di ottenere un output
Crisp, v
0
, a partire dallinsieme Fuzzy Q.
Questo procedimento prende il nome di
Defuzzificazione.
Esistono diverse tecniche per ottenere la
defuzzifica-zione, in particolare uno degli
approcci pi usato quello di calcolare il centro
di gravit dellinsieme Fuzzy di output.
Nel nostro esempio supponendo che Q(v)
possa avere K valori discreti nellinsieme
Fuzzy, il suo centro di gravit sar dato da:
Valutando questa equazione con i grafici
precedentemente descritti si stabilito che
v
0
=65.1 indicando che il frutto di colore z
0
implica una maturazione di circa il 65%.

=
=
=
K
v
K
v
v Q
v vQ
v
1
1
0
) (
) (
Aggiungiamo una variabile linguistica
che descriva anche la consistenza
della frutta, e quindi con tre funzioni
di appartenenza che descrivono la
frutta come: dura, mediamente
soffice, e soffice.
Useremo delle funzioni di appartenenza
basate su S-Shape e Bell-Shape.
In questo modo possiamo vedere come utilizzare pi premesse
nelle Regole. Poich intendiamo usare o luna oppure laltra
premessa occorre usare lintersezione ovvero loperatore OR.
0
1

duro
(z)
z

soffice
(z)
0.5

media
(z)
Consistenza del Frutto
Vediamo quindi i
diversi passi da
seguire per ottenere
un nuovo output:
Fuzzificazione
Operazione Logica
Fuzzy OR (max)
Implicazione
(min)
Aggregazione
(max)
Input 1
Colore (z
0
)
Input 2
Consistenza (c
0
) Defuzzificazione
Output
Centro di Gravit (v
0
)
Maturit
IF il colore giallo OR la consistenza media THEN la frutta Quasi Matura
IF il colore rosso OR la consistenza soffice THEN la frutta Matura
max
max
max
min
min
min
IF il colore verde OR la consistenza dura THEN la frutta acerba
Quando il numero di variabili alto, di uso comune la notazione abbreviata (variabile,
Insieme Fuzzy).
Per esempio
IF il colore Verde THEN il frutto acerbo
Diventa
IF (z,verde) THEN (v,acerbo)
In generale quando abbiamo M IF-THEN e N variabili di input, z
1
, z
2
, , z
N
, e una variabile di
output v, il tipo di formulazione di regole Fuzzy usate in Image Processing :
IF (z
1
,A
11
) AND (z
2
,A
12
) AND AND (z
N
,A
1N
) THEN (v,B
1
)
IF (z
1
,A
21
) AND (z
2
,A
22
) AND AND (z
N
,A
2N
) THEN (v,B
2
)

IF (z
1
,A
M1
) AND (z
2
,A
M2
) AND AND (z
N
,A
MN
) THEN (v,B
M
)
ELSE (v,B
E
)
Dove A
ij
linsieme Fuzzy con la regola i-esima associato alla variabile di input j-esima.
Abbiamo assunto che le variabili fossero unite dagli operatori AND, ma possono essere usati
anche operatori OR.
stato introdotta la Regola ELSE, con il rispettivo insieme B
E
, che entra in causa nel
momento in cui nessuna delle regole stata soddisfatta.
Come detto precedentemente ogni elemento delle premesse
di ogni regola deve essere processato per ottenere loutput.
Nella generalizzazione abbiamo utilizzato loperatore AND
per legare le premesse. Questo equivale ad effettuare
loperazione di minimo.
Infatti valutando le premesse delli-esima regola otteniamo:
Qualora fossero stati OR:
con i={1, 2, , M}
In genere
i
detta strength level oppure firing level della i-
esima regola.
{ } N , 1,2, j ; min
i
= = ) (z
j A
ij

{ } N , 1,2, j ; max
i
= = ) (z
j A
ij

La Regola ELSE entra in causa nel momento in cui nessuna


delle regole stata soddisfatta ovvero quando le THEN sono
debolmente soddisfatte.
In pratica la regola ELSE effettua un operazione di NOT sui
risultati delle altre regole.
Quindi se uniamo tutte le regole THEN (con lAND) non
soddisfatte, otteniamo la seguente strenght level del ELSE
Come si evince da questa formula possiamo constatare che
se tutte le THEN forniscono un full strenght (tutte le risposte
sono 1) allora la regola ELSE fornir una risposta 0. Allo
stesso modo se tutte le THEN sono debole allora la ELSE
sar forte. Questa la controparte Fuzzy del ben noto IF-
THEN-ELSE
{ } M , 1,2, i ; 1 min
i E
= =
Consideriamo adesso il problema del Contrast
Enhancement per il miglioramento
dell'esposizione di un'immagine.
Possiamo formalizzare il problema
dell'enhancement di un'immagine a scale di
grigio nel seguente modo:
IF un pixel scuro THEN rendi pi scuro
IF un pixel grigio THEN lascialo grigio
IF un pixel chiaro THEN rendilo pi chiaro
In termine di output, possiamo considerare +scuro un
grado di intensit prossimo al valore minimo, +chiaro un
grado di intensit prossimo al valore massimo e grigio un
valore posizionato intorno al centro della scala di grigio.
Le funzioni di appartenenza del tipo costante sono dette
singleton.
In pratica le funzioni di output vengono tagliate in funzione
dello strength delle variabili di input nel range [0,1].
0
1
z
0.5
(z)

scuro
(z)

chiaro
(z)

grigio
(z)
0
1
0.5
(v)

+scuro
(z)

+chiaro
(z)

grigio
(z)
v
v
+s
v
g
v
+c
Poich sono usate delle funzioni di
appartenenza costanti come output, il centro
di gravit v
0
per qualunque z
0
in input :
La somma di questi nominatore e
denominatore sono molto pi semplice rispetto
agli esempi precedenti poich le funzioni di
output sono costanti.
) ( ) ( ) (
) ( ) ( ) (
0 0 0
0 0 0
0
z z z
v z v z v z
v
chiaro grigio scuro
c chiaro g grigio s scuro


+ +
+ +
=
+ +
Da un punto di vista computazionale il
processamento Fuzzy di un immagine parecchio
intensivo.
Infatti questo significa che per ogni pixel della
immagine occorre fuzzificare l'input, processare le
regole (tutte), eseguire l'implicazione,
l'aggregazione e infine la defuzzificazione.
Quindi usare Singleton, come in questo caso,
semplifica notevolmente il processamento.
In questo esempio possiamo vedere come limmagine originale
(a), che inizialmente presentava uno scarso contrasto, mediante
unequalizzazione dellistogramma (b) stata s corretta nel
contrasto ma notevolmente deteriorata nella qualit poich
molte zone risultano sovraesposte. Applicando la tecnica Fuzzy
appena enunciata, usando v
+s
=0, v
g
=127 e v
+c
=255, si pu
vedere un risultato notevolmente migliore (c).
chiaro dal comportamento dell'istogramma il motivo
del miglioramento nel caso della tecnica Fuzzy
Quando si applica la logica Fuzzy al filtraggio
spaziale delle immagini fondamentale definire
correttamente la propriet degli adiacenti nel
filtro.
Per esempio consideriamo la ricerca dei bordi
tra le regioni delle immagini. Per fare ci
consideriamo un algoritmo basta sulle seguenti
regole fuzzy:
If un pixel appartiene ad una area omogenea Then diventa bianco
Else diventa nero
Per esprimere il concetto di regione omogenea in
termini Fuzzy consideriamo le differenze tra il
pixel centrale e i pixels adiacenti.
Siano z
i
i pixel considerati e d
i
le rispettive differenze
rispetto al pixel centrale (d
i
= z
i
- z
5
)
Un semplice insieme di regole che possono identificare le
zone omogenee sono:
IF d
2
Zero AND d
6
Zero THEN z
5
Bianco
IF d
6
Zero AND d
8
Zero THEN z
5
Bianco
IF d
8
Zero AND d
4
Zero THEN z
5
Bianco
IF d
4
Zero AND d
2
Zero THEN z
5
Bianco
ELSE z
5
Nero
z
1
z
1
z
2
z
2
z
3
z
3
z
4
z
4
z
5
z
5
z
6
z
6
z
7
z
7
z
8
z
8
z
9
z
9
d
1
d
1
d
2
d
2
d
3
d
3
d
4
d
4
0
0
d
6
d
6
d
7
d
7
d
8
d
8
d
9
d
9
Queste sono le possibili funzioni di
appartenenza per l'iniseme Fuzzy Zero e gli
output Fuzzy Nero e Bianco.
Come si nota i valori dell'insieme Zero variano
tra -(L-1) e (L-1), mentre i valori di output
sono definiti tra 0 e L-1, dove L il livello
massimo di scala di grigio definito.
0
1
L-1
0.5
-L+1
0
1
0.5
L-1
0
Zero Nero Bianco
0
(L-1)/2
Questo esempio illustra l'utilizzo del Filtro Fuzzy appena discusso.
Si pu vedere che le aree omogenee dell'immagine originale (a)
sono state discriminate nell'immagine (b) e i bordi sono stati
evidenziati. Il fatto che le aree omogenee siano vistosamente
grigie, piuttosto che bianche, dovuto al fatto che il loro valore
viene stimato calcolando il centro di gravit dell'area Bianca nella
defuzzificazione, infatti tale baricentro compreso tra (L-1)/2 e (L-
1). Basta normalizzare i valori tra 0 e L-1 per ottenere il risulta in
(c).
Facolt di Ingegneria Torvergata, Tesi di
Laurea, Ing Mancini, Prof. Gian Carlo Cardarilli.
Immagine Originaria Filtro Fuzzy 3x3 Filtro Passa-Basso
Immagine Degradata Filtro Fuzzy 5x5 Filtro Mediano 3x3

You might also like