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.978 88.319 4596 255 39.885 10.663 25.290 62.584
#> 2 64.984 79.730 3583 216 34.880 7.493 25.349 50.244
#> 3 408.209 89.951 4450 235 38.332 8.198 26.477 55.527
#> 4 179.888 86.115 3714 216 35.003 7.628 25.299 50.963
#> 5 332.706 91.761 4595 241 39.159 7.636 29.903 57.180
#> 6 498.513 102.614 5632 262 43.241 8.285 33.337 60.910
#> 7 120.931 85.234 1997 185 27.560 9.046 14.591 45.839
#> 8 430.317 221.474 4540 258 40.041 10.631 26.529 62.553
#> 9 122.551 219.411 3839 213 35.198 6.093 25.737 47.986
#> 10 207.462 227.858 4312 242 38.535 9.018 27.168 58.012
#> 11 508.742 223.613 3459 203 33.548 6.343 24.920 47.619
#> 12 353.102 213.194 2261 160 26.798 4.065 21.136 36.391
#> 13 283.772 222.857 2501 183 28.858 6.860 19.330 42.624
#> 14 512.010 330.866 3502 205 33.868 6.575 25.460 50.372
#> 15 364.540 339.504 4740 254 40.223 9.851 27.690 59.855
#> 16 129.392 341.377 4710 239 38.952 6.477 29.112 53.813
#> 17 434.654 340.102 3140 213 33.051 8.842 22.123 51.195
#> 18 292.817 338.404 3013 205 32.001 7.495 21.086 47.286
#> 19 223.578 354.074 4565 235 38.772 7.313 30.191 55.796
#> 20 498.604 470.412 5212 256 41.428 8.329 29.770 60.365
#> 21 309.112 486.982 4610 234 38.584 6.577 30.528 53.968
#> 22 84.204 480.257 2318 192 29.278 8.941 17.418 47.875
#> 23 226.612 486.934 3166 194 31.925 5.595 24.199 45.088
#> 24 371.605 483.569 2744 206 31.644 8.988 19.380 50.535
#> 25 148.527 483.259 2975 198 31.551 6.674 22.091 44.933
#> 26 434.101 481.160 2412 171 27.977 5.208 21.033 40.072
#> 27 509.516 597.312 4141 227 37.368 8.396 25.692 55.840
#> 28 436.721 608.731 4427 247 39.357 9.555 27.563 60.298
#> 29 351.847 607.111 4515 237 38.666 7.999 27.180 56.290
#> majoraxis eccentricity theta
#> 1 109.846 0.872 -1.476
#> 2 88.408 0.808 1.432
#> 3 100.289 0.823 -1.494
#> 4 92.242 0.829 -1.543
#> 5 98.445 0.792 1.402
#> 6 108.327 0.788 1.488
#> 7 76.747 0.895 -1.434
#> 8 107.621 0.863 1.569
#> 9 87.593 0.765 1.411
#> 10 100.537 0.837 -1.371
#> 11 85.407 0.794 1.528
#> 12 65.662 0.743 1.370
#> 13 77.997 0.850 1.432
#> 14 86.540 0.799 -1.421
#> 15 106.934 0.847 1.463
#> 16 97.085 0.768 1.326
#> 17 90.943 0.873 1.529
#> 18 83.592 0.831 1.418
#> 19 97.380 0.786 -1.535
#> 20 107.143 0.813 1.562
#> 21 95.807 0.762 1.530
#> 22 79.718 0.878 1.512
#> 23 80.446 0.779 1.389
#> 24 82.842 0.850 -1.565
#> 25 80.163 0.804 1.308
#> 26 70.695 0.785 -1.550
#> 27 97.742 0.831 1.324
#> 28 102.840 0.841 1.506
#> 29 99.205 0.808 1.353
#>
#> 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.978 88.319 6.282176 358.3488 56.04997 14.984602 35.53977
#> 2 64.984 79.730 4.897528 303.5425 49.01650 10.529834 35.62268
#> 3 408.209 89.951 6.082612 330.2430 53.86756 11.520563 37.20785
#> 4 179.888 86.115 5.076589 303.5425 49.18935 10.719548 35.55242
#> 5 332.706 91.761 6.280810 338.6748 55.02973 10.730790 42.02237
#> 6 498.513 102.614 7.698263 368.1858 60.76612 11.642823 46.84813
#> 7 120.931 85.234 2.729658 259.9786 38.72978 12.712249 20.50458
#> 8 430.317 221.474 6.205631 362.5647 56.26920 14.939632 37.28092
#> 9 122.551 219.411 5.247449 299.3267 49.46338 8.562429 36.16794
#> 10 207.462 227.858 5.893983 340.0801 54.15283 12.672900 38.17890
#> 11 508.742 223.613 4.728035 285.2738 47.14465 8.913751 35.01981
#> 12 353.102 213.194 3.090514 224.8463 37.65895 5.712502 29.70220
#> 13 283.772 222.857 3.418565 257.1680 40.55384 9.640286 27.16425
#> 14 512.010 330.866 4.786811 288.0843 47.59434 9.239778 35.77867
#> 15 364.540 339.504 6.479007 356.9435 56.52496 13.843507 38.91247
#> 16 129.392 341.377 6.438001 335.8642 54.73884 9.102060 40.91079
#> 17 434.654 340.102 4.292000 299.3267 46.44622 12.425569 31.08922
#> 18 292.817 338.404 4.118407 288.0843 44.97067 10.532645 29.63193
#> 19 223.578 354.074 6.239803 330.2430 54.48588 10.276882 42.42709
#> 20 498.604 470.412 7.124174 359.7541 58.21833 11.704656 41.83547
#> 21 309.112 486.982 6.301313 328.8377 54.22169 9.242589 42.90068
#> 22 84.204 480.257 3.168426 269.8156 41.14407 12.564693 24.47733
#> 23 226.612 486.934 4.327539 272.6262 44.86387 7.862595 34.00660
#> 24 371.605 483.569 3.750716 289.4896 44.46898 12.630742 27.23451
#> 25 148.527 483.259 4.066465 278.2473 44.33829 9.378902 31.04425
#> 26 434.101 481.160 3.296912 240.3045 39.31578 7.318748 29.55745
#> 27 509.516 597.312 5.660246 319.0007 52.51286 11.798810 36.10470
#> 28 436.721 608.731 6.051174 347.1065 55.30798 13.427541 38.73399
#> 29 351.847 607.111 6.171459 333.0536 54.33692 11.240910 38.19577
#> radius.max majoraxis eccentricity theta
#> 1 87.94864 154.36543 0.872 -1.476
#> 2 70.60736 124.23883 0.808 1.432
#> 3 78.03151 140.93508 0.823 -1.494
#> 4 71.61777 129.62671 0.829 -1.543
#> 5 80.35445 138.34372 0.792 1.402
#> 6 85.59618 152.23079 0.788 1.488
#> 7 64.41706 107.85175 0.895 -1.434
#> 8 87.90507 151.23866 0.863 1.569
#> 9 67.43422 123.09352 0.765 1.411
#> 10 81.52365 141.28359 0.837 -1.371
#> 11 66.91848 120.02156 0.794 1.528
#> 12 51.13989 92.27412 0.743 1.370
#> 13 59.89906 109.60836 0.850 1.432
#> 14 70.78724 121.61375 0.799 -1.421
#> 15 84.11360 150.27322 0.847 1.463
#> 16 75.62284 136.43253 0.768 1.326
#> 17 71.94379 127.80124 0.873 1.529
#> 18 66.45052 117.47096 0.831 1.418
#> 19 78.40953 136.84709 0.786 -1.535
#> 20 84.83030 150.56693 0.813 1.562
#> 21 75.84066 134.63657 0.762 1.530
#> 22 67.27823 112.02687 0.878 1.512
#> 23 63.36169 113.04992 0.779 1.389
#> 24 71.01630 116.41699 0.850 -1.565
#> 25 63.14387 112.65222 0.804 1.308
#> 26 56.31276 99.34694 0.785 -1.550
#> 27 78.47136 137.35580 0.831 1.324
#> 28 84.73614 144.51997 0.841 1.506
#> 29 79.10374 139.41174 0.808 1.353
#>
#> 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)