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
#> m.cx m.cy s.area s.perimeter s.radius.mean s.radius.sd s.radius.min
#> 1 251.924 88.247 4553 250 39.679 10.688 24.515
#> 2 64.933 79.709 3561 213 34.724 7.466 25.470
#> 3 408.176 89.933 4427 235 38.161 8.065 26.534
#> 4 179.898 86.075 3682 212 34.749 7.572 25.485
#> 5 332.599 91.751 4558 240 39.042 7.685 29.724
#> 6 498.497 102.640 5618 260 43.212 8.321 33.557
#> 7 120.889 85.060 1976 183 27.483 8.949 14.787
#> 8 430.240 221.419 4497 247 39.418 10.336 26.803
#> 9 122.479 219.560 3800 213 35.045 6.008 25.456
#> 10 207.363 227.908 4280 240 38.415 9.104 26.964
#> 11 508.721 223.647 3440 200 33.416 6.343 25.092
#> 12 353.080 213.183 2240 159 26.674 4.086 21.016
#> 13 283.681 222.861 2467 180 28.710 6.902 19.115
#> 14 511.961 330.843 3480 202 33.720 6.549 25.371
#> 15 364.434 339.486 4697 251 40.094 9.791 27.877
#> 16 129.365 341.427 4673 232 38.701 6.512 29.378
#> 17 434.512 340.155 3097 210 32.851 8.839 21.448
#> 18 292.692 338.444 2975 201 31.798 7.560 20.928
#> 19 223.341 354.214 4496 234 38.563 7.377 29.783
#> 20 498.600 470.439 5179 254 41.249 8.302 29.691
#> 21 308.982 486.997 4554 232 38.360 6.599 30.065
#> 22 84.074 480.211 2293 192 29.218 8.942 17.334
#> 23 226.524 486.935 3136 194 31.837 5.674 24.361
#> 24 371.588 483.488 2715 203 31.496 9.022 19.058
#> 25 148.305 483.235 2931 197 31.302 6.588 22.146
#> 26 433.987 481.162 2387 168 27.764 5.209 21.001
#> 27 509.492 597.296 4122 227 37.307 8.399 25.704
#> 28 436.632 608.809 4384 247 39.287 9.549 27.825
#> 29 351.795 607.111 4484 238 38.571 8.018 27.149
#> s.radius.max m.majoraxis m.eccentricity m.theta
#> 1 62.181 109.270 0.872 -1.476
#> 2 50.504 88.140 0.808 1.432
#> 3 55.334 99.982 0.822 -1.494
#> 4 51.378 91.860 0.829 -1.543
#> 5 56.999 98.134 0.793 1.400
#> 6 61.158 108.229 0.788 1.488
#> 7 45.158 76.063 0.894 -1.434
#> 8 61.279 107.105 0.864 1.567
#> 9 47.306 87.164 0.766 1.408
#> 10 57.685 100.329 0.838 -1.374
#> 11 47.441 85.205 0.794 1.527
#> 12 35.309 65.433 0.744 1.370
#> 13 42.388 77.664 0.852 1.427
#> 14 49.820 86.191 0.798 -1.422
#> 15 60.424 106.564 0.848 1.460
#> 16 54.210 96.982 0.771 1.322
#> 17 51.894 90.510 0.874 1.525
#> 18 46.841 83.212 0.833 1.415
#> 19 55.612 96.976 0.790 -1.540
#> 20 60.696 106.776 0.813 1.559
#> 21 54.353 95.669 0.767 1.529
#> 22 47.863 78.958 0.877 1.509
#> 23 45.425 80.321 0.782 1.390
#> 24 50.141 82.355 0.851 -1.568
#> 25 45.636 80.056 0.810 1.308
#> 26 39.957 70.511 0.788 -1.551
#> 27 55.114 97.498 0.831 1.323
#> 28 60.809 102.312 0.841 1.501
#> 29 56.400 99.003 0.809 1.353
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
#> m.cx m.cy s.area s.perimeter s.radius.mean s.radius.sd s.radius.min
#> 1 251.924 88.247 6.211414 9.421265 1.495306 0.4027779 0.9238493
#> 2 64.933 79.709 4.858082 8.026918 1.308576 0.2813567 0.9598385
#> 3 408.176 89.933 6.039519 8.855989 1.438100 0.3039300 0.9999354
#> 4 179.898 86.075 5.023156 7.989233 1.309518 0.2853513 0.9604038
#> 5 332.599 91.751 6.218236 9.044415 1.471300 0.2896097 1.1201507
#> 6 498.497 102.640 7.664337 9.798116 1.628447 0.3135774 1.2645976
#> 7 120.889 85.060 2.695751 6.896366 1.035699 0.3372436 0.5572490
#> 8 430.240 221.419 6.135017 9.308210 1.485470 0.3895128 1.0100727
#> 9 122.479 219.560 5.184137 8.026918 1.320673 0.2264118 0.9593109
#> 10 207.363 227.908 5.838975 9.044415 1.447672 0.3430848 1.0161400
#> 11 508.721 223.647 4.693008 7.537012 1.259284 0.2390363 0.9455935
#> 12 353.080 213.183 3.055912 5.991925 1.005211 0.1539812 0.7919892
#> 13 283.681 222.861 3.365596 6.783311 1.081938 0.2601023 0.7203499
#> 14 511.961 330.843 4.747578 7.612382 1.270740 0.2467995 0.9561077
#> 15 364.434 339.486 6.407866 9.458950 1.510945 0.3689744 1.0505464
#> 16 129.365 341.427 6.375124 8.742934 1.458450 0.2454051 1.1071117
#> 17 434.512 340.155 4.225071 7.913863 1.237992 0.3330983 0.8082692
#> 18 292.692 338.444 4.058633 7.574697 1.198310 0.2848991 0.7886729
#> 19 223.341 354.214 6.133652 8.818304 1.453249 0.2780027 1.1223742
#> 20 498.600 470.439 7.065433 9.572005 1.554471 0.3128614 1.1189071
#> 21 308.982 486.997 6.212779 8.742934 1.445599 0.2486837 1.1330013
#> 22 84.074 480.211 3.128217 7.235532 1.101082 0.3369798 0.6532328
#> 23 226.524 486.935 4.278277 7.310902 1.199779 0.2138250 0.9180458
#> 24 371.588 483.488 3.703929 7.650067 1.186929 0.3399946 0.7182019
#> 25 148.305 483.235 3.998607 7.423957 1.179618 0.2482692 0.8345734
#> 26 433.987 481.162 3.256456 6.331090 1.046288 0.1963015 0.7914240
#> 27 509.492 597.296 5.623424 8.554509 1.405917 0.3165168 0.9686568
#> 28 436.632 608.809 5.980857 9.308210 1.480533 0.3598546 1.0485868
#> 29 351.795 607.111 6.117281 8.969044 1.453550 0.3021588 1.0231117
#> s.radius.max m.majoraxis m.eccentricity m.theta
#> 1 2.343295 4.117847 0.872 -1.476
#> 2 1.903246 3.321561 0.808 1.432
#> 3 2.085265 3.767828 0.822 -1.494
#> 4 1.936183 3.461750 0.829 -1.543
#> 5 2.148011 3.698186 0.793 1.400
#> 6 2.304743 4.078616 0.788 1.488
#> 7 1.701782 2.866439 0.894 -1.434
#> 8 2.309303 4.036258 0.864 1.567
#> 9 1.782729 3.284781 0.766 1.408
#> 10 2.173863 3.780904 0.838 -1.374
#> 11 1.787817 3.210956 0.794 1.527
#> 12 1.330622 2.465847 0.744 1.370
#> 13 1.597394 2.926773 0.852 1.427
#> 14 1.877470 3.248113 0.798 -1.422
#> 15 2.277082 4.015871 0.848 1.460
#> 16 2.042907 3.654773 0.771 1.322
#> 17 1.955629 3.410875 0.874 1.525
#> 18 1.765206 3.135849 0.833 1.415
#> 19 2.095742 3.654546 0.790 -1.540
#> 20 2.287332 4.023860 0.813 1.559
#> 21 2.048296 3.605292 0.767 1.529
#> 22 1.803720 2.975537 0.877 1.509
#> 23 1.711844 3.026902 0.782 1.390
#> 24 1.889567 3.103553 0.851 -1.568
#> 25 1.719795 3.016915 0.810 1.308
#> 26 1.505782 2.657211 0.788 -1.551
#> 27 2.076974 3.674218 0.831 1.323
#> 28 2.291591 3.855634 0.841 1.501
#> 29 2.125437 3.730934 0.809 1.353
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)