Obrigado por utilizar o pacote ExpImage
. Este pacote foi desenvolvido a fim de facilitar o uso da analise de imagens na obtenção de várias informações sobre os objetos que elas contém. Para a utilização do pacote é indispensável a instalação do pacote EBImage
. Geralmente, este pacote pode ser instalado ao executar os seguintes comandos:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("EBImage")
Porém se houver problemas na instalação sugerimos que consulte mais opções de instalação no site: https://bioconductor.org/packages/release/bioc/html/EBImage.html
Convidamos a todos os usuários do ExpImage que venha conhecer nossos materiais didáticos sobre este e outros pacotes nos seguintes links:
Após a instalação dos pacotes é necessário fazer sua ativação
# library(EBImage)
library(ExpImage)
Para abrir as imagens pode-se inicialmente indicar a pasta de trabalho onde a imagem se encontra com a função setwd
. E, posteriormente, abrir a imagem com a função read_image
.
Neste caso, poderiam ser utilizados comandos como esses:
#Apagar memoria do R
remove(list=ls())
#Indicar a pasta de trabalho
setwd("D:/Backup Pendrive/")
im=read_image("Imagem.jpeg",plot=TRUE)
Neste exemplo utilizaremos uma imagem contida no banco de dados do pacote.
# Obtendo o endereço da imagem de exemplo
=example_image(11)
end=read_image(end,plot=TRUE) im
Vamos verificar qual é o melhor índice para fazer a segmentação.
plot_indexes(im)
O Índice ExG é uma ótima opção para a segmentação, pois os bovinos se destacaram bastante em relação ao solo.
#Criando o objeto com o índice
=gray_scale(im,method = "ExG",plot=T) im2
Agora podemos fazer a segmentação. Para isso utilizaremos o algorítimo de otsu a fim de selecionar os pixels de menores valores (foregrounds)
=segmentation(im2,treshold = "otsu",selectHigher = FALSE,plot=TRUE)
im3#> The treshold by Otsu melhod is (O valor do limiar pelo etodo otsu e): 0.5605
A partir dessa imagem segmentada podemos contar o número de objetos.
=measure_image(im3)
im4#Numero de objetos
$ObjectNumber
im4#> [1] 149
#Tamanho em pixels de cada objeto
$measures[,3]
im4#> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#> 111 6 48 113 4 3 45 194 1 206 1 1 1 193 178 123 152 186 205 148
#> 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
#> 117 373 1 66 1 1 84 1 1 171 2 1 206 187 172 161 2 166 196 152
#> 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
#> 1 140 209 137 171 137 2 208 3 2 198 174 232 139 209 2 1 1 4 4
#> 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
#> 213 157 3 231 2 8 2 3 1 1 234 102 5 196 1 128 1 2 212 184
#> 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
#> 1 6 232 1 1 193 1 211 1 175 186 1 177 1 5 160 1 1 1 4
#> 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
#> 1 191 8 139 181 203 214 1 177 135 180 167 192 167 166 163 1 1 166 187
#> 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
#> 138 3 1 173 206 30 146 193 198 5 8 2 174 162 164 163 2 4 1 152
#> 141 142 143 144 145 146 147 148 149
#> 5 176 144 163 163 170 87 2 1
Como pode-se observar, o número de objetos é muito superior ao número de animais. Isso é uma consequência do ruido. Podemos ver na terceira coluna da tabela anterior o número de pixels de cada objeto. Os menores valores de área são os ruidos. Logo, podemos selecionar um valor a partir do qua não consideraremos ruídos. Ao olhar o conjunto de dados podemos ver que um ruído de 50 pode permitir selecionar apenas os animais.
=measure_image(im3,noise=50)
im4$measures[,1:3]
im4#> m.cx m.cy s.area
#> 1 131.08108 11.819820 111
#> 2 201.81416 7.938053 113
#> 3 273.61856 17.974227 194
#> 4 441.08252 18.606796 206
#> 5 565.81865 24.155440 193
#> 6 303.81461 31.280899 178
#> 7 467.07317 32.065041 123
#> 8 179.31579 34.098684 152
#> 9 373.01613 32.252688 186
#> 10 257.07317 34.531707 205
#> 11 57.42568 37.966216 148
#> 12 128.01709 48.709402 117
#> 13 233.79893 55.477212 373
#> 14 42.36364 46.924242 66
#> 15 46.13095 55.726190 84
#> 16 547.02924 54.614035 171
#> 17 484.11650 84.888350 206
#> 18 292.56684 81.951872 187
#> 19 359.20930 84.482558 172
#> 20 570.25466 89.838509 161
#> 21 100.08434 101.698795 166
#> 22 157.35204 95.285714 196
#> 23 87.98684 107.250000 152
#> 24 215.11429 116.450000 140
#> 25 413.68421 110.086124 209
#> 26 21.51095 113.510949 137
#> 27 334.64912 119.210526 171
#> 28 45.77372 129.569343 137
#> 29 563.31731 133.062500 208
#> 30 184.69697 145.777778 198
#> 31 107.66092 147.390805 174
#> 32 266.00431 152.465517 232
#> 33 383.30216 156.935252 139
#> 34 414.78469 154.234450 209
#> 35 500.43192 164.328638 213
#> 36 18.43312 169.050955 157
#> 37 478.58874 167.610390 231
#> 38 337.74359 172.410256 234
#> 39 84.81373 179.637255 102
#> 40 427.12755 179.469388 196
#> 41 293.12500 194.796875 128
#> 42 207.71698 194.051887 212
#> 43 551.38587 193.782609 184
#> 44 439.07759 200.099138 232
#> 45 494.48187 201.787565 193
#> 46 359.24171 212.767773 211
#> 47 107.08571 214.594286 175
#> 48 450.66667 217.413978 186
#> 49 47.79096 218.632768 177
#> 50 167.99375 223.506250 160
#> 51 457.10471 231.785340 191
#> 52 395.50360 243.086331 139
#> 53 40.43646 243.176796 181
#> 54 506.51724 247.921182 203
#> 55 416.60748 252.121495 214
#> 56 352.66667 252.338983 177
#> 57 470.87407 260.644444 135
#> 58 143.03889 264.377778 180
#> 59 197.52695 265.275449 167
#> 60 433.78125 273.375000 192
#> 61 76.65269 271.401198 167
#> 62 271.00000 274.825301 166
#> 63 130.73006 279.036810 163
#> 64 328.53614 280.765060 166
#> 65 411.64706 285.786096 187
#> 66 39.18116 287.884058 138
#> 67 271.02890 292.231214 173
#> 68 513.75243 294.902913 206
#> 69 160.58904 295.383562 146
#> 70 350.22280 298.658031 193
#> 71 457.72222 307.803030 198
#> 72 526.67816 318.678161 174
#> 73 600.29012 317.981481 162
#> 74 107.54268 320.103659 164
#> 75 143.11656 321.895706 163
#> 76 178.86842 328.973684 152
#> 77 504.80682 331.840909 176
#> 78 90.00694 331.687500 144
#> 79 407.02454 334.644172 163
#> 80 227.34356 336.582822 163
#> 81 468.80000 339.529412 170
#> 82 27.66667 341.827586 87
#Numero de objetos
$ObjectNumber
im4#> [1] 82
Para conferir se este número de animais está correto podemos marcar na imagem as coordenadas de cada animal, considerando só dados das duas primeiras colunas do conjunto de dados.
plot_meansures(im,im4$measures[,1],im4$measures[,2],text ="o",
cex =2 )
Como podemos ver, todos os animas foram marcados. Logo, a contagem dos animais está correta.