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.929 88.236 4536 251 39.702 10.706 24.512 62.390
#> 2 64.912 79.673 3546 213 34.672 7.458 25.488 50.511
#> 3 408.143 89.948 4411 235 38.168 8.107 26.394 55.402
#> 4 179.893 86.066 3676 212 34.726 7.584 25.340 51.374
#> 5 332.544 91.774 4542 240 38.997 7.710 29.689 57.017
#> 6 498.492 102.640 5610 260 43.203 8.313 33.569 60.676
#> 7 120.837 85.047 1965 183 27.447 8.957 14.824 45.150
#> 8 430.229 221.410 4480 248 39.424 10.340 26.785 61.470
#> 9 122.456 219.551 3781 211 34.943 6.094 25.528 47.923
#> 10 207.373 227.883 4268 240 38.369 9.139 26.783 57.288
#> 11 508.686 223.627 3425 200 33.374 6.309 25.131 47.403
#> 12 353.071 213.195 2236 160 26.683 4.094 20.975 35.101
#> 13 283.676 222.868 2454 181 28.704 6.927 18.862 42.192
#> 14 511.950 330.858 3474 202 33.705 6.549 25.381 49.822
#> 15 364.391 339.447 4685 252 40.110 9.835 27.671 60.222
#> 16 129.328 341.430 4658 232 38.690 6.508 29.458 54.099
#> 17 434.441 340.239 3074 211 32.796 8.842 21.341 52.041
#> 18 292.625 338.400 2954 201 31.710 7.618 20.518 46.861
#> 19 223.293 354.325 4477 233 38.439 7.367 29.676 55.357
#> 20 498.587 470.449 5168 255 41.256 8.335 29.647 60.885
#> 21 308.910 487.043 4530 232 38.309 6.669 29.844 54.331
#> 22 84.073 480.105 2278 192 29.181 8.972 17.223 47.862
#> 23 226.506 486.946 3120 193 31.726 5.667 24.352 45.208
#> 24 371.520 483.176 2682 192 30.510 7.888 19.673 47.844
#> 25 148.250 483.237 2910 196 31.218 6.637 21.981 45.535
#> 26 433.976 481.163 2378 168 27.724 5.216 20.996 39.956
#> 27 509.474 597.274 4115 227 37.269 8.362 25.707 55.133
#> 28 436.622 608.805 4368 245 39.178 9.563 27.800 60.416
#> 29 351.735 607.135 4464 240 38.419 7.913 27.080 56.981
#> majoraxis eccentricity theta
#> 1 109.024 0.871 -1.478
#> 2 87.875 0.807 1.432
#> 3 99.898 0.823 -1.495
#> 4 91.850 0.829 -1.543
#> 5 98.109 0.795 1.398
#> 6 108.029 0.787 1.487
#> 7 75.903 0.895 -1.435
#> 8 106.938 0.864 1.567
#> 9 87.055 0.767 1.406
#> 10 100.121 0.837 -1.375
#> 11 84.875 0.792 1.526
#> 12 65.349 0.744 1.369
#> 13 77.532 0.853 1.428
#> 14 86.079 0.798 -1.425
#> 15 106.464 0.848 1.459
#> 16 96.935 0.772 1.322
#> 17 90.288 0.875 1.523
#> 18 83.162 0.835 1.418
#> 19 96.837 0.790 -1.543
#> 20 106.736 0.813 1.560
#> 21 95.610 0.769 1.528
#> 22 78.577 0.876 1.508
#> 23 80.197 0.783 1.393
#> 24 80.934 0.845 -1.570
#> 25 79.912 0.811 1.305
#> 26 70.430 0.788 -1.552
#> 27 97.342 0.830 1.323
#> 28 101.973 0.840 1.500
#> 29 98.863 0.810 1.352
#>
#> 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.929 88.236 6.203610 353.3367 55.88914 15.071008 34.50594
#> 2 64.912 79.673 4.849647 299.8435 48.80833 10.498746 35.87987
#> 3 408.143 89.948 6.032655 330.8133 53.72971 11.412354 37.15526
#> 4 179.893 86.066 5.027441 298.4358 48.88435 10.676118 35.67152
#> 5 332.544 91.774 6.211816 337.8519 54.89670 10.853491 41.79368
#> 6 498.492 102.640 7.672454 366.0062 60.81756 11.702343 47.25562
#> 7 120.837 85.047 2.687410 257.6120 38.63758 12.608913 20.86798
#> 8 430.229 221.410 6.127022 349.1136 55.49780 14.555784 37.70567
#> 9 122.456 219.551 5.171043 297.0281 49.18982 8.578622 35.93618
#> 10 207.373 227.883 5.837083 337.8519 54.01266 12.865117 37.70286
#> 11 508.686 223.627 4.684163 281.5432 46.98112 8.881281 35.37731
#> 12 353.071 213.195 3.058041 225.2346 37.56209 5.763189 29.52684
#> 13 283.676 222.868 3.356186 254.7966 40.40708 9.751249 26.55234
#> 14 511.950 330.858 4.751177 284.3586 47.44707 9.219132 35.72924
#> 15 364.391 339.447 6.407388 354.7444 56.46349 13.844887 38.95291
#> 16 129.328 341.430 6.370462 326.5901 54.46453 9.161416 41.46850
#> 17 434.441 340.239 4.204122 297.0281 46.16746 12.447025 30.04207
#> 18 292.625 338.400 4.040005 282.9509 44.63868 10.723981 28.88352
#> 19 223.293 354.325 6.122919 327.9978 54.11120 10.370644 41.77538
#> 20 498.587 470.449 7.067958 358.9676 58.07673 11.733313 41.73456
#> 21 308.910 487.043 6.195404 326.5901 53.92819 9.388058 42.01188
#> 22 84.073 480.105 3.115481 270.2815 41.07856 12.630028 24.24509
#> 23 226.506 486.946 4.267033 271.6892 44.66120 7.977527 34.28070
#> 24 371.520 483.176 3.668007 270.2815 42.94942 11.104064 27.69400
#> 25 148.250 483.237 3.979829 275.9123 43.94608 9.343011 30.94301
#> 26 433.976 481.163 3.252245 236.4963 39.02752 7.342647 29.55641
#> 27 509.474 597.274 5.627834 319.5515 52.46417 11.771322 36.18816
#> 28 436.622 608.805 5.973847 344.8904 55.15150 13.461989 39.13451
#> 29 351.735 607.135 6.105140 337.8519 54.08304 11.139257 38.12095
#> radius.max majoraxis eccentricity theta
#> 1 87.82740 153.47483 0.871 -1.478
#> 2 71.10515 123.70305 0.807 1.432
#> 3 77.99028 140.62802 0.823 -1.495
#> 4 72.32000 129.29872 0.829 -1.543
#> 5 80.26375 138.10961 0.795 1.398
#> 6 85.41458 152.07416 0.787 1.487
#> 7 63.55838 106.84987 0.895 -1.435
#> 8 86.53231 150.53834 0.864 1.567
#> 9 67.46198 122.54872 0.767 1.406
#> 10 80.64524 140.94194 0.837 -1.375
#> 11 66.72996 119.47990 0.792 1.526
#> 12 49.41224 91.99284 0.744 1.369
#> 13 59.39436 109.14304 0.853 1.428
#> 14 70.13523 121.17479 0.798 -1.425
#> 15 84.77548 149.87108 0.848 1.459
#> 16 76.15603 136.45695 0.772 1.322
#> 17 73.25895 127.09987 0.875 1.523
#> 18 65.96698 117.06848 0.835 1.418
#> 19 77.92694 136.31900 0.790 -1.543
#> 20 85.70879 150.25398 0.813 1.560
#> 21 76.48262 134.59173 0.769 1.528
#> 22 67.37611 110.61410 0.876 1.508
#> 23 63.64003 112.89460 0.783 1.393
#> 24 67.35077 113.93209 0.845 -1.570
#> 25 64.10035 112.49340 0.811 1.305
#> 26 56.24670 99.14544 0.788 -1.552
#> 27 77.61161 137.02990 0.830 1.323
#> 28 85.04857 143.54903 0.840 1.500
#> 29 80.21307 139.17103 0.810 1.352
#>
#> 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)