Obrigado por utilizar o pacote ExpImage
. Este pacote foi desenvolvido a fim de facilitar o uso da análise 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 imagens contidas no banco de dados do pacote. Vamos utilizar neste exemplo 4 imagens. Uma da imagem a ser avaliada e 3 de paletas de cores a serem utilizadas na segmentação.
#######################################################
#Abrir imagem das folhas
=example_image(3)
end1=read_image(end1,plot=TRUE) im
#Abrir paleta de cores do fundo
=example_image(4)
end2=read_image(end2,plot=TRUE) fundo
#Abrir paleta de cores das folhas
=example_image(5)
end3=read_image(end3,plot=TRUE) folhas
#Abrir paleta de cores referência
=example_image(6)
end4=read_image(end4,plot=TRUE) ref
Para resolver este problema nós vamos fazer duas segmentações. A primeira para obter os pixels referente apenas às folhas. A segunda segmentação será feita para obter os pixels correspondente apenas ao objeto de referência.
#################################################################
#Segmentacao para separar as folhas do restante
=segmentation_logit(im,foreground=folhas,background=list(fundo,ref),sample=2000,fillHull=TRUE,plot=TRUE) folhas.seg
#Segmentacao para separar o objeto de referencia do restante
=segmentation_logit(im,foreground=ref,background=list(fundo,folhas),sample=2000,fillHull=TRUE,plot=TRUE) ref.seg
Agora que temos os pixels referentes apenas às folhas podemos estimar várias medidas com a função measure_image
=measure_image(folhas.seg,noise = 1000) medidas
#numero de objetos e medias
medidas#> $ObjectNumber
#> [1] 29
#>
#> $measures
#> x y area perimeter radius.mean radius.sd radius.min radius.max
#> 1 251.770 88.528 4681 266 40.495 10.801 25.250 62.163
#> 2 64.968 80.076 3625 222 35.015 7.398 25.393 50.899
#> 3 408.066 90.205 4495 241 38.598 8.247 26.092 55.203
#> 4 179.690 86.483 3769 224 35.409 7.859 24.305 51.787
#> 5 332.513 92.024 4622 246 39.361 7.744 29.376 57.522
#> 6 498.467 102.761 5645 268 43.292 8.376 33.213 61.592
#> 7 120.828 85.567 2061 194 28.086 9.118 14.675 46.131
#> 8 430.181 221.963 4573 262 40.217 10.635 26.510 62.758
#> 9 122.340 219.383 3878 223 35.625 6.284 25.507 48.373
#> 10 207.327 228.075 4349 249 38.715 9.014 27.068 57.805
#> 11 508.601 223.595 3500 211 33.886 6.348 24.911 47.178
#> 12 352.931 213.325 2255 163 26.752 4.098 21.056 36.240
#> 13 283.665 223.085 2541 199 29.661 7.387 19.144 44.396
#> 14 511.939 330.935 3531 214 34.079 6.633 25.620 49.830
#> 15 364.326 339.712 4756 258 40.403 9.833 27.880 61.388
#> 16 129.140 341.374 4713 249 39.157 6.638 29.544 54.462
#> 17 434.505 340.499 3183 220 33.529 8.999 22.100 51.196
#> 18 292.608 338.879 3018 208 31.946 7.598 20.838 46.618
#> 19 223.356 354.608 4550 244 38.901 7.496 29.818 55.560
#> 20 498.382 470.626 5252 265 41.584 8.241 29.574 60.543
#> 21 308.835 487.124 4593 238 38.486 6.589 30.341 54.063
#> 22 84.182 480.579 2360 198 29.570 9.084 17.413 48.603
#> 23 226.458 487.008 3171 198 31.917 5.548 24.416 44.499
#> 24 371.423 483.878 2802 210 31.723 8.846 19.963 50.710
#> 25 148.325 483.480 3009 206 31.767 6.532 22.446 45.072
#> 26 433.929 481.313 2425 173 28.037 5.308 20.991 39.076
#> 27 509.540 597.603 4153 231 37.475 8.485 25.305 55.813
#> 28 436.652 608.993 4445 255 39.711 9.725 27.579 60.618
#> 29 351.530 607.446 4513 246 38.692 8.086 27.009 56.684
#> majoraxis eccentricity theta
#> 1 110.934 0.872 -1.475
#> 2 89.273 0.811 1.427
#> 3 100.897 0.824 -1.495
#> 4 93.061 0.829 -1.544
#> 5 99.009 0.794 1.396
#> 6 109.042 0.793 1.488
#> 7 78.726 0.898 -1.439
#> 8 108.501 0.865 1.565
#> 9 88.332 0.768 1.406
#> 10 101.000 0.837 -1.373
#> 11 85.652 0.790 1.523
#> 12 65.705 0.745 1.365
#> 13 79.200 0.854 1.432
#> 14 87.131 0.801 -1.425
#> 15 107.700 0.850 1.455
#> 16 97.640 0.773 1.320
#> 17 91.575 0.873 1.518
#> 18 84.298 0.836 1.406
#> 19 97.602 0.789 -1.543
#> 20 107.585 0.813 1.563
#> 21 95.674 0.762 1.526
#> 22 80.766 0.881 1.510
#> 23 80.467 0.778 1.385
#> 24 83.895 0.851 -1.565
#> 25 80.648 0.805 1.299
#> 26 71.131 0.788 -1.554
#> 27 98.285 0.833 1.322
#> 28 103.436 0.843 1.504
#> 29 99.748 0.812 1.345
#>
#> attr(,"class")
#> [1] "measurements"
Com o comando acima temos várias medidas de áreas em pixels. Logo, é legal converter essa medida para cm² a partir do objeto de referência. Sabendo a área do objeto de referência podemos fazer a conversão com da seguinte forma:
#Convertendo a area dos objetos para cm2
#Identificando a area do objeto de referência (maior area)
# A area conhecida do objeto de referência tem 8.5 x 5.5 cm
#e sua areasegmentada esta no objeto ref.seg
=measure_image(img = folhas.seg,noise =1000,id=ref.seg,length =8.5,width =5.5 ) medidasref
#numero de objetos e medias
medidasref#> $ObjectNumber
#> [1] 29
#>
#> $measures
#> x y area perimeter radius.mean radius.sd radius.min
#> 1 251.770 88.528 6.393875 374.4539 57.00568 15.204800 35.54497
#> 2 64.968 80.076 4.951462 312.5142 49.29137 10.414324 35.74627
#> 3 408.066 90.205 6.139813 339.2609 54.33524 11.609479 36.73027
#> 4 179.690 86.483 5.148155 315.3296 49.84601 11.063283 34.21467
#> 5 332.513 92.024 6.313285 346.2995 55.40933 10.901395 41.35323
#> 6 498.467 102.761 7.710622 377.2694 60.94308 11.791075 46.75465
#> 7 120.828 85.567 2.815162 273.0980 39.53727 12.835605 20.65831
#> 8 430.181 221.963 6.246355 368.8230 56.61434 14.971118 37.31870
#> 9 122.340 219.383 5.297040 313.9219 50.15008 8.846122 35.90675
#> 10 207.327 228.075 5.940389 350.5227 54.49994 12.689202 38.10421
#> 11 508.601 223.595 4.780722 297.0292 47.70205 8.936216 35.06775
#> 12 352.931 213.325 3.080151 229.4586 37.65937 5.768843 29.64098
#> 13 283.665 223.085 3.470804 280.1366 41.75443 10.398839 26.94942
#> 14 511.939 330.935 4.823066 301.2524 47.97374 9.337417 36.06583
#> 15 364.326 339.712 6.496319 363.1922 56.87617 13.842126 39.24728
#> 16 129.140 341.374 6.437584 350.5227 55.12215 9.344455 41.58972
#> 17 434.505 340.499 4.347725 309.6987 47.19949 12.668086 31.11065
#> 18 292.608 338.879 4.122349 292.8061 44.97107 10.695868 29.33410
#> 19 223.356 354.608 6.214939 343.4840 54.76177 10.552280 41.97544
#> 20 498.382 470.626 7.173815 373.0462 58.53869 11.601033 41.63196
#> 21 308.835 487.124 6.273674 335.0377 54.17757 9.275477 42.71168
#> 22 84.182 480.579 3.223573 278.7289 41.62633 12.787742 24.51265
#> 23 226.458 487.008 4.331334 278.7289 44.93025 7.810039 34.37093
#> 24 371.423 483.878 3.827310 295.6215 44.65715 12.452705 28.10234
#> 25 148.325 483.480 4.110055 289.9906 44.71909 9.195237 31.59772
#> 26 433.929 481.313 3.312358 243.5358 39.46829 7.472186 29.54948
#> 27 509.540 597.603 5.672668 325.1837 52.75436 11.944517 35.62239
#> 28 436.652 608.993 6.071517 358.9690 55.90203 13.690092 38.82355
#> 29 351.530 607.446 6.164400 346.2995 54.46756 11.382836 38.02115
#> radius.max majoraxis eccentricity theta
#> 1 87.50819 156.16418 0.872 -1.475
#> 2 71.65162 125.67152 0.811 1.427
#> 3 77.71045 142.03488 0.824 -1.495
#> 4 72.90167 131.00397 0.829 -1.544
#> 5 80.97496 139.37710 0.794 1.396
#> 6 86.70438 153.50077 0.793 1.488
#> 7 64.93960 110.82428 0.898 -1.439
#> 8 88.34579 152.73919 0.865 1.565
#> 9 68.09571 124.34686 0.768 1.406
#> 10 81.37334 142.17987 0.837 -1.373
#> 11 66.41349 120.57416 0.790 1.523
#> 12 51.01583 92.49434 0.745 1.365
#> 13 62.49720 111.49154 0.854 1.432
#> 14 70.14676 122.65618 0.801 -1.425
#> 15 86.41721 151.61161 0.850 1.455
#> 16 76.66733 137.44993 0.773 1.320
#> 17 72.06971 128.91210 0.873 1.518
#> 18 65.62516 118.66811 0.836 1.406
#> 19 78.21301 137.39644 0.789 -1.543
#> 20 85.22768 151.44972 0.813 1.563
#> 21 76.10565 134.68235 0.762 1.526
#> 22 68.41949 113.69604 0.881 1.510
#> 23 62.64220 113.27513 0.778 1.385
#> 24 71.38556 118.10080 0.851 -1.565
#> 25 63.44882 113.52992 0.805 1.299
#> 26 55.00813 100.13264 0.788 -1.554
#> 27 78.56916 138.35791 0.833 1.322
#> 28 85.33326 145.60908 0.843 1.504
#> 29 79.79529 140.41741 0.812 1.345
#>
#> attr(,"class")
#> [1] "measurements"
Para a melhor visualização dos resultados, podemos sobrepor a área das folhas sobre a imagem com o seguinte comando:
#Plotar resultados das areas em pixel e salvar em imagem jpg
plot_meansures(im,medidasref$measures[,1],coordy=medidasref$measures[,2],text=round(medidasref$measures[,3],1),col="red",
cex = 0.9 ,plot=TRUE)