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
Para instalar o pacote ´ExpImage´ basta utilizar o seguinte comando:
install.packages("ExpImage")
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,NumberCores=2)
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)
max(c(im2@.Data))
#> [1] 1
=segmentation(im2,treshold = "otsu",selectHigher = FALSE,plot=TRUE)
im3#> [1] "The threshold by Otsu method is (O valor do limiar pelo metodo 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#> x y area
#> 1 131.081 11.820 111
#> 2 201.814 7.938 113
#> 3 273.619 17.974 194
#> 4 441.083 18.607 206
#> 5 565.819 24.155 193
#> 6 303.815 31.281 178
#> 7 467.073 32.065 123
#> 8 179.316 34.099 152
#> 9 373.016 32.253 186
#> 10 257.073 34.532 205
#> 11 57.426 37.966 148
#> 12 128.017 48.709 117
#> 13 233.799 55.477 373
#> 14 42.364 46.924 66
#> 15 46.131 55.726 84
#> 16 547.029 54.614 171
#> 17 484.117 84.888 206
#> 18 292.567 81.952 187
#> 19 359.209 84.483 172
#> 20 570.255 89.839 161
#> 21 100.084 101.699 166
#> 22 157.352 95.286 196
#> 23 87.987 107.250 152
#> 24 215.114 116.450 140
#> 25 413.684 110.086 209
#> 26 21.511 113.511 137
#> 27 334.649 119.211 171
#> 28 45.774 129.569 137
#> 29 563.317 133.062 208
#> 30 184.697 145.778 198
#> 31 107.661 147.391 174
#> 32 266.004 152.466 232
#> 33 383.302 156.935 139
#> 34 414.785 154.234 209
#> 35 500.432 164.329 213
#> 36 18.433 169.051 157
#> 37 478.589 167.610 231
#> 38 337.744 172.410 234
#> 39 84.814 179.637 102
#> 40 427.128 179.469 196
#> 41 293.125 194.797 128
#> 42 207.717 194.052 212
#> 43 551.386 193.783 184
#> 44 439.078 200.099 232
#> 45 494.482 201.788 193
#> 46 359.242 212.768 211
#> 47 107.086 214.594 175
#> 48 450.667 217.414 186
#> 49 47.791 218.633 177
#> 50 167.994 223.506 160
#> 51 457.105 231.785 191
#> 52 395.504 243.086 139
#> 53 40.436 243.177 181
#> 54 506.517 247.921 203
#> 55 416.607 252.121 214
#> 56 352.667 252.339 177
#> 57 470.874 260.644 135
#> 58 143.039 264.378 180
#> 59 197.527 265.275 167
#> 60 433.781 273.375 192
#> 61 76.653 271.401 167
#> 62 271.000 274.825 166
#> 63 130.730 279.037 163
#> 64 328.536 280.765 166
#> 65 411.647 285.786 187
#> 66 39.181 287.884 138
#> 67 271.029 292.231 173
#> 68 513.752 294.903 206
#> 69 160.589 295.384 146
#> 70 350.223 298.658 193
#> 71 457.722 307.803 198
#> 72 526.678 318.678 174
#> 73 600.290 317.981 162
#> 74 107.543 320.104 164
#> 75 143.117 321.896 163
#> 76 178.868 328.974 152
#> 77 504.807 331.841 176
#> 78 90.007 331.688 144
#> 79 407.025 334.644 163
#> 80 227.344 336.583 163
#> 81 468.800 339.529 170
#> 82 27.667 341.828 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,measurements = im4,pch=1,
cex =2 )
Como podemos ver, todos os animas foram marcados. Logo, a contagem dos animais está correta.