-
Notifications
You must be signed in to change notification settings - Fork 0
/
trabalho3_base.R
114 lines (91 loc) · 2.95 KB
/
trabalho3_base.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
library(IM)
library(e1071)
library(wvtool)
library(ecodist)
library(imager)
#------------------------------------------------#
# Funcao para exibir uma imagem #
#------------------------------------------------#
show_image <- function(img, classe){
plot(img, axes = FALSE, main = classe)
}
#------------------------------------------------#
# Carrega e retorna todas as imagens #
#------------------------------------------------#
read_images <- function(path_soccer){
name_imgs <- list.files(path_soccer, full.names = TRUE)
all_im <- lapply(name_imgs, load.image)
return(all_im)
}
#------------------------------------------------#
# Exibe a classe de cada imagem (time) #
#------------------------------------------------#
get_classes<- function(path_soccer){
name_imgs <- list.files(path_soccer, full.names = FALSE)
classes<-NULL
for(name in name_imgs){
name<-strsplit(name, '_')
print(name[1])
classes<-cbind(classes,name[[1]][1])
}
return(classes)
}
#------------------------------------------------#
# Retorna ground_truth escolhida classe relevante#
#------------------------------------------------#
get_ground_truth<- function(classes, classe_relevante){
ground_truth <- integer(length(classes))
ground_truth[which(classes %in% classe_relevante)] <-1
return(ground_truth)
}
#------------------------------------------------#
# cria matriz de coocorrencia e retorna caract #
#------------------------------------------------#
criarMatrizCoocorrencia <- function(img, Q){
# discretizando as cores
img <- (img) %/% 16
# print(img)
niveis <- 16
n <- dim(img)[1]
m <- dim(img)[2]
P <- matrix(0, nrow = niveis, ncol = niveis)
for (i in 1:n){
for (j in 1:m){
x <- j + Q[1]
y <- i + Q[2]
if (x >= 0 && x <= m && y >= 0 && y <= n){
P[img[i, j] + 1, img[y, x] + 1] <- P[img[i, j] + 1, img[y, x] + 1] + 1
}
}
}
# print(P)
P <- P / sum(P)
return(c(P))
}
#------------------------------------------------#
# BORDA #
#------------------------------------------------#
bordacount <- function(...) {
# obtem os rankings
rankings <- mapply(order, list(...), SIMPLIFY = FALSE)
# calcula a ordem baseada na soma das posições dos rankings
return(do.call(combsum, rankings))
}
#------------------------------------------------#
# COMBMIN #
#------------------------------------------------#
combmin <- function(...) {
order(mapply(min, ...))
}
#------------------------------------------------#
# COMBMAX #
#------------------------------------------------#
combmax <- function(...) {
order(mapply(max, ...))
}
#------------------------------------------------#
# COMBSUM #
#------------------------------------------------#
combsum <- function(...) {
order(mapply(sum, ...))
}