🍃 Classificação de Espécies de Folhas
Visão Computacional · Segmentação · Extração de Descritores · Aprendizado de Máquina
Classificação automática de 32 espécies de plantas a partir de imagens de folhas,
usando segmentação KMeans, descritores HOG + forma, PCA e classificadores KNN/SVM.
📷 Imagem
│
▼
🔵 Segmentação
├─ Convolução (kernel 10×10 para suavização)
├─ KMeans (K=2) → separa folha do fundo
└─ Limiarização de Otsu → máscara binária
│
▼
📐 Extração de Descritores (10 features por imagem)
├─ Forma: Circularity, Eccentricity, Solidity, Aspect Ratio,
│ Perimeter, Area, Num Corners (Harris)
└─ Textura: HOG Norm, HOG Mean, HOG Var
│
▼
📉 PCA → 4 componentes principais (93.06% da variância)
│
▼
🤖 Classificação
├─ KNN (K=5, Euclidean) → 76.61%
├─ SVM (RBF, C=10) → 79.23% ✅ melhor
└─ SVM (Linear, C=10) → 77.66%
Modelo
Acurácia
Macro Avg Precision
Macro Avg Recall
Macro Avg F1
SVM RBF C=10, gamma=scale
79.23%
0.79
0.78
0.78
SVM Linear C=10
77.66%
0.77
0.77
0.76
KNN K=5, Euclidean
76.61%
0.76
0.76
0.75
Divisão treino/teste: 70% / 30% estratificado · 1334 treino · 573 teste
Resultados por Espécie — KNN (76.61%)
Espécie
Precision
Recall
F1-Score
Suporte
1. Bamboo (Phyllostachys)
0.45
0.28
0.34
18
2. Horse Chestnut (Aesculus)
0.75
0.79
0.77
19
3. Redbud (Cercis)
0.96
1.00
0.98
22
4. Indigo (Indigofera)
1.00
1.00
1.00
22
5. Japanese Maple (Acer)
1.00
1.00
1.00
17
6. Nanmu (Phoebe)
0.70
1.00
0.83
19
7. Castor Aralia (Kalopanax)
0.82
0.88
0.85
16
8. Goldenrain (Koelreuteria)
0.88
0.78
0.82
18
9. Chinese Cinnamon
0.62
0.50
0.55
16
10. Anhui Barberry (Berberis)
0.74
0.89
0.81
19
11. Holly (Ilex)
0.80
0.80
0.80
15
12. Cheesewood (Pittosporum)
0.78
0.74
0.76
19
13. Wintersweet (Chimonanthus)
0.67
0.62
0.65
16
14. Camphortree (Cinnamomum)
0.56
0.53
0.54
19
15. Arrowwood (Viburnum)
0.58
0.61
0.59
18
16. Sweet Osmanthus
0.31
0.24
0.27 ⚠️
17
17. Deodar Cedar (Cedrus)
0.96
1.00
0.98
23
18. Ginkgo (Ginkgo biloba)
0.72
0.68
0.70
19
19. Crape Myrtle (Lagerstroemia)
0.75
1.00
0.86
18
20. Oleander (Nerium)
0.78
0.90
0.84
20
21. Yew Plum Pine (Podocarpus)
0.71
0.83
0.77
18
22. Cherry (Prunus serrulata)
0.65
0.69
0.67
16
23. Glossy Privet (Ligustrum)
0.65
0.69
0.67
16
24. Chinese Toon (Tonna)
1.00
0.80
0.89
20
25. Peach (Prunus persica)
0.67
0.75
0.71
16
26. Woodlotus (Manglietia)
0.89
0.50
0.64
16
27. Trident Maple (Acer)
0.88
0.94
0.91
16
28. Beales Barberry (Mahonia)
0.67
0.62
0.65
16
29. Southern Magnolia
0.79
0.88
0.83
17
30. Canadian Poplar
0.73
0.84
0.78
19
31. Tulip Tree (Liriodendron)
0.90
0.56
0.69
16
32. Tangerine (Citrus)
0.94
0.88
0.91
17
Resultados por Espécie — SVM RBF (79.23%) ✅ Melhor Modelo
Espécie
Precision
Recall
F1-Score
Suporte
1. Bamboo (Phyllostachys)
0.67
0.44
0.53
18
2. Horse Chestnut (Aesculus)
0.65
0.79
0.71
19
3. Redbud (Cercis)
1.00
1.00
1.00
22
4. Indigo (Indigofera)
1.00
1.00
1.00
22
5. Japanese Maple (Acer)
1.00
1.00
1.00
17
6. Nanmu (Phoebe)
0.76
1.00
0.86
19
7. Castor Aralia (Kalopanax)
0.88
0.88
0.88
16
8. Goldenrain (Koelreuteria)
0.84
0.89
0.86
18
9. Chinese Cinnamon
0.60
0.19
0.29 ⚠️
16
10. Anhui Barberry (Berberis)
0.70
1.00
0.83
19
11. Holly (Ilex)
0.87
0.87
0.87
15
12. Cheesewood (Pittosporum)
0.88
0.79
0.83
19
13. Wintersweet (Chimonanthus)
0.53
0.56
0.55
16
14. Camphortree (Cinnamomum)
0.53
0.42
0.47
19
15. Arrowwood (Viburnum)
0.76
0.72
0.74
18
16. Sweet Osmanthus
0.50
0.47
0.48
17
17. Deodar Cedar (Cedrus)
1.00
1.00
1.00
23
18. Ginkgo (Ginkgo biloba)
0.53
0.47
0.50
19
19. Crape Myrtle (Lagerstroemia)
0.75
1.00
0.86
18
20. Oleander (Nerium)
0.82
0.90
0.86
20
21. Yew Plum Pine (Podocarpus)
0.65
0.83
0.73
18
22. Cherry (Prunus serrulata)
0.75
0.75
0.75
16
23. Glossy Privet (Ligustrum)
0.69
0.69
0.69
16
24. Chinese Toon (Tonna)
1.00
0.85
0.92
20
25. Peach (Prunus persica)
0.71
0.75
0.73
16
26. Woodlotus (Manglietia)
0.88
0.88
0.88
16
27. Trident Maple (Acer)
0.88
0.94
0.91
16
28. Beales Barberry (Mahonia)
0.77
0.62
0.69
16
29. Southern Magnolia
0.87
0.76
0.81
17
30. Canadian Poplar
0.82
0.95
0.88
19
31. Tulip Tree (Liriodendron)
1.00
0.75
0.86
16
32. Tangerine (Citrus)
0.89
0.94
0.91
17
Resultados por Espécie — SVM Linear (77.66%)
Espécie
Precision
Recall
F1-Score
Suporte
1. Bamboo (Phyllostachys)
0.50
0.28
0.36
18
2. Horse Chestnut (Aesculus)
0.64
0.74
0.68
19
3. Redbud (Cercis)
0.95
0.95
0.95
22
4. Indigo (Indigofera)
1.00
1.00
1.00
22
5. Japanese Maple (Acer)
1.00
1.00
1.00
17
6. Nanmu (Phoebe)
0.86
1.00
0.93
19
7. Castor Aralia (Kalopanax)
0.93
0.88
0.90
16
8. Goldenrain (Koelreuteria)
0.83
0.83
0.83
18
9. Chinese Cinnamon
0.75
0.38
0.50
16
10. Anhui Barberry (Berberis)
0.70
1.00
0.83
19
11. Holly (Ilex)
0.87
0.87
0.87
15
12. Cheesewood (Pittosporum)
0.87
0.68
0.76
19
13. Wintersweet (Chimonanthus)
0.67
0.50
0.57
16
14. Camphortree (Cinnamomum)
0.58
0.58
0.58
19
15. Arrowwood (Viburnum)
0.72
0.72
0.72
18
16. Sweet Osmanthus
0.69
0.53
0.60
17
17. Deodar Cedar (Cedrus)
1.00
1.00
1.00
23
18. Ginkgo (Ginkgo biloba)
0.43
0.47
0.45
19
19. Crape Myrtle (Lagerstroemia)
0.75
1.00
0.86
18
20. Oleander (Nerium)
0.70
0.80
0.74
20
21. Yew Plum Pine (Podocarpus)
0.67
0.89
0.76
18
22. Cherry (Prunus serrulata)
0.65
0.69
0.67
16
23. Glossy Privet (Ligustrum)
0.65
0.69
0.67
16
24. Chinese Toon (Tonna)
0.89
0.85
0.87
20
25. Peach (Prunus persica)
0.75
0.75
0.75
16
26. Woodlotus (Manglietia)
0.67
0.62
0.65
16
27. Trident Maple (Acer)
0.83
0.94
0.88
16
28. Beales Barberry (Mahonia)
0.80
0.75
0.77
16
29. Southern Magnolia
0.88
0.82
0.85
17
30. Canadian Poplar
0.77
0.89
0.83
19
31. Tulip Tree (Liriodendron)
0.92
0.69
0.79
16
32. Tangerine (Citrus)
0.88
0.82
0.85
17
Componente
Variância
Acumulada
Principais Contribuintes
PC1
51.33%
51.33%
HOG Norm, HOG Mean, HOG Var, Perimeter
PC2
19.68%
71.01%
Circularity, Solidity, Area
PC3
14.28%
85.29%
Eccentricity, Aspect Ratio
PC4
7.77%
93.06%
Num Corners
Loadings (contribuição de cada descritor):
Descritor
PC1
PC2
PC3
PC4
Circularity
-0.025
+0.667
-0.219
+0.123
Eccentricity
-0.248
-0.084
+0.623
-0.053
Solidity
-0.164
+0.493
+0.418
-0.205
Perimeter
+0.354
-0.238
+0.300
+0.019
Area
+0.294
+0.488
+0.055
+0.044
Num Corners
+0.314
-0.009
-0.067
+0.732
Aspect Ratio
+0.277
-0.044
-0.431
-0.583
HOG Norm
+0.415
+0.062
+0.195
-0.168
HOG Mean
+0.424
-0.039
+0.166
+0.029
HOG Var
+0.414
+0.058
+0.204
-0.180
~1907 imagens de 32 espécies do dataset Flavia / Chinese Leaf :
#
Espécie
Nome Comum
Imagens
1
Phyllostachys edulis
Bambu
59
2
Aesculus chinensis
Castanha-da-índia
63
3
Cercis chinensis
Olho-de-boi
72
4
Indigofera tinctoria
Índigo
73
5
Acer palmatum
Bordo-japonês
56
6
Phoebe nanmu
Nanmu
62
7
Kalopanax septemlobus
Arália
52
8
Koelreuteria paniculata
Chuva-de-ouro
59
9
Cinnamomum japonicum
Canela-japonesa
55
10
Berberis anhweiensis
Berberis
65
11
Ilex macrocarpa
Azevinho
50
12
Pittosporum tobira
Pittosporum
63
13
Chimonanthus praecox
Chimonanto
52
14
Cinnamomum camphora
Cânfora
65
15
Viburnum awabuki
Viburno
60
16
Osmanthus fragrans
Osmanthus
56
17
Cedrus deodara
Cedro
77
18
Ginkgo biloba
Ginkgo
62
19
Lagerstroemia indica
Resedá
61
20
Nerium oleander
Oleandro
66
21
Podocarpus macrophyllus
Podocarpus
60
22
Prunus serrulata
Cerejeira
55
23
Ligustrum lucidum
Ligustro
55
24
Toona sinensis
Toon chinês
65
25
Prunus persica
Pessegueiro
54
26
Manglietia fordiana
Magnólia-da-china
52
27
Acer buergerianum
Bordo-tridente
53
28
Mahonia bealei
Mahônia
55
29
Magnolia grandiflora
Magnólia
57
30
Populus canadensis
Álamo canadense
64
31
Liriodendron chinense
Tulipeiro
53
32
Citrus reticulata
Tangerina
56
Descritores de Forma e Textura
Descritores de Forma (regionprops + Harris)
Descritor
Fórmula / Definição
Circularity
4π·Area / Perimeter² — 1.0 = círculo perfeito
Eccentricity
Excentricidade da elipse equivalente (0 = círculo, 1 = linha)
Solidity
Area / Area_convexa — mede reentrâncias e recortes
Perimeter
Comprimento do contorno da região segmentada
Area
Número de pixels na região segmentada
Aspect Ratio
height / width da bounding box
Num Corners
Cantos detectados por Harris (min_distance=20, threshold_rel=0.02)
Descritores HOG (Histogram of Oriented Gradients)
Configuração: orientations=9, pixels_per_cell=(8,8), cells_per_block=(2,2), transform_sqrt=True
Descritor
Definição
HOG Norm
‖hog_features‖ — quantidade total de gradientes orientados
HOG Mean
Força média dos gradientes na imagem
HOG Var
Variância dos gradientes — irregularidade da textura
pip install numpy matplotlib scikit-image scikit-learn pandas seaborn scipy
O projeto roda no Google Colab com imagens armazenadas no Google Drive.
# Ajuste o caminho conforme sua estrutura no Drive
path_images = '/content/drive/MyDrive/VC/Leaves'
Abra classificacao_folhas.py no Colab ou IDE local
Monte o Google Drive quando solicitado
Certifique-se que as imagens estão no caminho acima
Execute o script