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.935 88.356 4585 254 39.796 10.674 25.199 62.363
#> 2 64.936 79.766 3570 216 34.812 7.488 25.347 50.583
#> 3 408.175 89.955 4439 234 38.232 8.114 26.535 55.161
#> 4 179.859 86.146 3704 216 34.973 7.633 25.321 50.960
#> 5 332.603 91.847 4574 240 39.031 7.624 29.693 57.364
#> 6 498.520 102.619 5621 262 43.209 8.304 33.336 60.914
#> 7 120.907 85.163 1993 184 27.623 9.029 14.703 45.862
#> 8 430.247 221.532 4518 256 39.989 10.653 26.737 62.426
#> 9 122.456 219.494 3815 217 35.202 6.107 25.352 48.175
#> 10 207.372 227.941 4291 243 38.532 9.147 27.003 57.659
#> 11 508.695 223.640 3448 203 33.485 6.314 24.936 47.652
#> 12 353.056 213.249 2245 160 26.689 4.052 21.120 36.315
#> 13 283.712 222.959 2490 182 28.878 6.959 19.050 43.273
#> 14 511.968 330.877 3493 205 33.836 6.583 25.490 50.371
#> 15 364.445 339.596 4716 254 40.212 9.848 27.814 60.063
#> 16 129.296 341.431 4686 235 38.907 6.599 29.599 55.056
#> 17 434.539 340.207 3117 214 33.028 8.865 21.319 51.383
#> 18 292.677 338.505 2985 202 31.855 7.539 20.896 47.007
#> 19 223.372 354.283 4518 237 38.679 7.370 29.927 55.505
#> 20 498.564 470.491 5197 255 41.329 8.335 29.596 60.887
#> 21 308.946 487.006 4568 236 38.493 6.592 30.469 54.063
#> 22 84.144 480.331 2306 192 29.231 8.959 17.372 47.872
#> 23 226.510 486.956 3146 194 31.882 5.647 24.378 45.427
#> 24 371.566 483.601 2735 206 31.615 9.005 19.381 50.534
#> 25 148.370 483.270 2954 199 31.447 6.572 22.041 45.454
#> 26 434.005 481.215 2398 171 27.862 5.286 20.898 39.483
#> 27 509.508 597.362 4130 227 37.324 8.402 25.701 55.824
#> 28 436.677 608.850 4405 249 39.355 9.578 27.451 60.991
#> 29 351.735 607.202 4485 237 38.558 8.020 27.254 56.272
#> majoraxis eccentricity theta
#> 1 109.803 0.872 -1.476
#> 2 88.458 0.810 1.433
#> 3 100.155 0.823 -1.495
#> 4 92.161 0.829 -1.544
#> 5 98.421 0.794 1.396
#> 6 108.316 0.789 1.488
#> 7 76.482 0.894 -1.434
#> 8 107.543 0.864 1.568
#> 9 87.435 0.767 1.408
#> 10 100.482 0.838 -1.373
#> 11 85.255 0.793 1.526
#> 12 65.442 0.743 1.366
#> 13 78.009 0.851 1.430
#> 14 86.469 0.799 -1.423
#> 15 106.888 0.848 1.460
#> 16 97.029 0.770 1.324
#> 17 90.800 0.874 1.525
#> 18 83.451 0.833 1.415
#> 19 97.138 0.789 -1.540
#> 20 107.033 0.813 1.560
#> 21 95.610 0.765 1.529
#> 22 79.761 0.880 1.511
#> 23 80.331 0.781 1.387
#> 24 82.860 0.852 -1.566
#> 25 79.967 0.805 1.305
#> 26 70.706 0.788 -1.550
#> 27 97.685 0.831 1.323
#> 28 102.599 0.841 1.502
#> 29 99.173 0.810 1.351
#>
#> 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,plot = FALSE )
medidasref#numero de objetos e medias
medidasref#> $ObjectNumber
#> [1] 29
#>
#> $measures
#> x y area perimeter radius.mean radius.sd radius.min
#> 1 251.935 88.356 6.265126 357.6456 56.03490 15.029565 35.48155
#> 2 64.936 79.766 4.878190 304.1396 49.01717 10.543506 35.68994
#> 3 408.175 89.955 6.065626 329.4846 53.83271 11.424948 37.36270
#> 4 179.859 86.146 5.061292 304.1396 49.24386 10.747674 35.65333
#> 5 332.603 91.847 6.250095 337.9329 54.95774 10.735001 41.80934
#> 6 498.520 102.619 7.680757 368.9101 60.84059 11.692478 46.93888
#> 7 120.907 85.163 2.723314 259.0819 38.89467 12.713317 20.70261
#> 8 430.247 221.532 6.173574 360.4617 56.30666 14.999996 37.64713
#> 9 122.456 219.494 5.212967 305.5477 49.56631 8.598984 35.69698
#> 10 207.372 227.941 5.863393 342.1570 54.25512 12.879467 38.02167
#> 11 508.695 223.640 4.711484 285.8349 47.14868 8.890451 35.11123
#> 12 353.056 213.249 3.067657 225.2886 37.57955 5.705434 29.73809
#> 13 283.712 222.959 3.402435 256.2658 40.66177 9.798646 26.82342
#> 14 511.968 330.877 4.772974 288.6510 47.64290 9.269217 35.89129
#> 15 364.445 339.596 6.444129 357.6456 56.62066 13.866513 39.16361
#> 16 129.296 341.431 6.403136 330.8926 54.78315 9.291746 41.67698
#> 17 434.539 340.207 4.259192 301.3235 46.50520 12.482396 30.01830
#> 18 292.677 338.505 4.078822 284.4268 44.85355 10.615317 29.42269
#> 19 223.372 354.283 6.173574 333.7087 54.46211 10.377356 42.13882
#> 20 498.564 470.491 7.101387 359.0537 58.19345 11.736128 41.67276
#> 21 308.946 487.006 6.241896 332.3007 54.20021 9.281890 42.90199
#> 22 84.144 480.331 3.151010 270.3463 41.15882 12.614753 24.46071
#> 23 226.510 486.956 4.298819 273.1624 44.89157 7.951279 34.32553
#> 24 371.566 483.601 3.737212 290.0591 44.51562 12.679524 27.28949
#> 25 148.370 483.270 4.036463 280.2027 44.27906 9.253729 31.03491
#> 26 434.005 481.215 3.276722 240.7772 39.23119 7.442972 29.42551
#> 27 509.508 597.362 5.643396 319.6282 52.55420 11.830467 36.18839
#> 28 436.677 608.850 6.019167 350.6054 55.41395 13.486338 38.65248
#> 29 351.735 607.202 6.128482 333.7087 54.29173 11.292591 38.37510
#> radius.max majoraxis eccentricity theta
#> 1 87.81045 154.60852 0.872 -1.476
#> 2 71.22358 124.55361 0.810 1.433
#> 3 77.66965 141.02362 0.823 -1.495
#> 4 71.75442 129.76764 0.829 -1.544
#> 5 80.77159 138.58205 0.794 1.396
#> 6 85.77018 152.51474 0.789 1.488
#> 7 64.57616 107.69076 0.894 -1.434
#> 8 87.89916 151.42632 0.864 1.568
#> 9 67.83299 123.11317 0.767 1.408
#> 10 81.18697 141.48405 0.838 -1.373
#> 11 67.09657 120.04362 0.793 1.526
#> 12 51.13347 92.14585 0.743 1.366
#> 13 60.93071 109.84086 0.851 1.430
#> 14 70.92507 121.75299 0.799 -1.423
#> 15 84.57193 150.50404 0.848 1.460
#> 16 77.52180 136.62204 0.770 1.324
#> 17 72.35002 127.85128 0.874 1.525
#> 18 66.18838 117.50349 0.833 1.415
#> 19 78.15402 136.77552 0.789 -1.540
#> 20 85.73217 150.70821 0.813 1.560
#> 21 76.12361 134.62401 0.765 1.529
#> 22 67.40635 112.30777 0.880 1.511
#> 23 63.96366 113.11036 0.781 1.387
#> 24 71.15459 116.67133 0.852 -1.566
#> 25 64.00167 112.59783 0.805 1.305
#> 26 55.59418 99.55784 0.788 -1.550
#> 27 78.60319 137.54573 0.831 1.323
#> 28 85.87860 144.46490 0.841 1.502
#> 29 79.23400 139.64091 0.810 1.351
#>
#> 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)