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.882 88.484 4612 258 40.098 10.870 25.156 62.050
#> 2 64.962 79.907 3587 216 34.853 7.439 25.347 50.578
#> 3 408.143 90.113 4460 239 38.475 8.254 26.239 55.915
#> 4 179.787 86.335 3725 220 35.151 7.723 25.048 51.524
#> 5 332.580 91.963 4586 242 39.175 7.703 29.544 56.912
#> 6 498.496 102.701 5620 264 43.187 8.296 33.083 61.485
#> 7 120.867 85.500 2032 190 27.826 9.074 14.586 46.069
#> 8 430.207 221.760 4541 256 39.879 10.523 26.699 62.593
#> 9 122.365 219.420 3832 217 35.289 6.139 25.687 48.645
#> 10 207.324 228.019 4306 244 38.590 9.101 27.151 57.844
#> 11 508.665 223.610 3457 205 33.589 6.347 25.049 47.357
#> 12 352.988 213.283 2246 161 26.731 4.126 21.096 36.223
#> 13 283.668 222.953 2500 185 28.919 6.922 19.248 43.352
#> 14 511.945 330.878 3499 207 33.890 6.606 25.672 50.073
#> 15 364.397 339.705 4726 254 40.268 9.878 27.953 61.317
#> 16 129.214 341.484 4683 241 38.934 6.660 29.447 54.928
#> 17 434.456 340.369 3129 216 33.189 8.918 21.296 51.949
#> 18 292.626 338.720 2983 206 31.861 7.652 20.648 46.812
#> 19 223.310 354.509 4519 238 38.772 7.513 30.034 55.713
#> 20 498.498 470.535 5212 258 41.458 8.333 29.552 60.688
#> 21 308.862 487.112 4564 237 38.510 6.659 30.333 53.974
#> 22 84.151 480.436 2321 194 29.381 8.896 17.613 48.261
#> 23 226.474 486.992 3151 195 31.912 5.671 24.339 45.373
#> 24 371.548 483.643 2755 208 31.633 8.943 19.644 50.621
#> 25 148.334 483.412 2964 198 31.468 6.539 22.100 45.678
#> 26 433.963 481.248 2404 171 27.895 5.263 21.323 39.473
#> 27 509.522 597.477 4131 231 37.456 8.480 25.363 55.318
#> 28 436.670 608.950 4413 251 39.467 9.633 27.519 60.303
#> 29 351.637 607.286 4482 239 38.526 8.094 27.107 57.141
#> majoraxis eccentricity theta
#> 1 110.481 0.874 -1.476
#> 2 88.669 0.809 1.430
#> 3 100.465 0.823 -1.495
#> 4 92.657 0.831 -1.543
#> 5 98.647 0.795 1.395
#> 6 108.542 0.790 1.488
#> 7 78.024 0.898 -1.438
#> 8 107.953 0.865 1.566
#> 9 87.747 0.768 1.405
#> 10 100.664 0.838 -1.375
#> 11 85.398 0.794 1.525
#> 12 65.649 0.746 1.365
#> 13 78.226 0.852 1.429
#> 14 86.637 0.800 -1.424
#> 15 107.289 0.850 1.458
#> 16 97.222 0.772 1.321
#> 17 90.953 0.874 1.522
#> 18 83.982 0.838 1.408
#> 19 97.421 0.791 -1.542
#> 20 107.234 0.813 1.562
#> 21 95.592 0.765 1.526
#> 22 80.032 0.880 1.508
#> 23 80.374 0.780 1.389
#> 24 83.060 0.851 -1.566
#> 25 80.187 0.806 1.301
#> 26 70.724 0.787 -1.554
#> 27 97.871 0.832 1.322
#> 28 102.992 0.843 1.503
#> 29 99.482 0.813 1.348
#>
#> 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.882 88.484 6.307551 363.4258 56.48313 15.311776 35.43542
#> 2 64.962 79.907 4.905721 304.2634 49.09488 10.478776 35.70447
#> 3 408.143 90.113 6.099669 336.6619 54.19692 11.626807 36.96096
#> 4 179.787 86.335 5.094455 309.8979 49.51465 10.878826 35.28329
#> 5 332.580 91.963 6.271992 340.8877 55.18296 10.850654 41.61648
#> 6 498.496 102.701 7.686131 371.8775 60.83438 11.685970 46.60161
#> 7 120.867 85.500 2.779042 267.6391 39.19646 12.781882 20.54623
#> 8 430.207 221.760 6.210448 360.6085 56.17464 14.822982 37.60893
#> 9 122.365 219.420 5.240792 305.6721 49.70904 8.647561 36.18340
#> 10 207.324 228.019 5.889053 343.7050 54.35892 12.819915 38.24563
#> 11 508.665 223.610 4.727928 288.7685 47.31437 8.940556 35.28470
#> 12 352.988 213.283 3.071717 226.7890 37.65401 5.811995 29.71640
#> 13 283.668 222.953 3.419097 260.5960 40.73608 9.750516 27.11325
#> 14 511.945 330.878 4.785368 291.5858 47.73837 9.305390 36.16227
#> 15 364.397 339.705 6.463461 357.7913 56.72259 13.914418 39.37535
#> 16 129.214 341.484 6.404653 339.4791 54.84348 9.381456 41.47984
#> 17 434.456 340.369 4.279342 304.2634 46.75092 12.562136 29.99812
#> 18 292.626 338.720 4.079667 290.1772 44.88027 10.778814 29.08533
#> 19 223.310 354.509 6.180360 335.2532 54.61529 10.583015 42.30670
#> 20 498.498 470.535 7.128134 363.4258 58.39886 11.738089 41.62775
#> 21 308.862 487.112 6.241904 333.8446 54.24623 9.380047 42.72788
#> 22 84.151 480.436 3.174290 273.2736 41.38687 12.531146 24.81015
#> 23 226.474 486.992 4.309430 274.6823 44.95211 7.988324 34.28457
#> 24 371.548 483.643 3.767845 292.9944 44.55910 12.597351 27.67107
#> 25 148.334 483.412 4.053682 278.9082 44.32668 9.211012 31.13066
#> 26 433.963 481.248 3.287804 240.8752 39.29365 7.413604 30.03615
#> 27 509.522 597.477 5.649716 325.3928 52.76153 11.945157 35.72701
#> 28 436.670 608.950 6.035390 353.5654 55.59428 13.569304 38.76401
#> 29 351.637 607.286 6.129757 336.6619 54.26876 11.401427 38.18365
#> radius.max majoraxis eccentricity theta
#> 1 87.40531 155.62652 0.874 -1.476
#> 2 71.24554 124.90155 0.809 1.430
#> 3 78.76338 141.51771 0.823 -1.495
#> 4 72.57810 130.51915 0.831 -1.543
#> 5 80.16778 138.95683 0.795 1.395
#> 6 86.60943 152.89519 0.790 1.488
#> 7 64.89404 109.90671 0.898 -1.438
#> 8 88.17019 152.06551 0.865 1.566
#> 9 68.52266 123.60280 0.768 1.405
#> 10 81.48062 141.79803 0.838 -1.375
#> 11 66.70835 120.29393 0.794 1.525
#> 12 51.02470 92.47496 0.746 1.365
#> 13 61.06680 110.19126 0.852 1.429
#> 14 70.53418 122.03922 0.800 -1.424
#> 15 86.37278 151.13018 0.850 1.458
#> 16 77.37307 136.94954 0.772 1.321
#> 17 73.17677 128.11885 0.874 1.522
#> 18 65.94065 118.29931 0.838 1.408
#> 19 78.47884 137.22985 0.791 -1.542
#> 20 85.48676 151.05271 0.813 1.562
#> 21 76.02923 134.65347 0.765 1.526
#> 22 67.98175 112.73524 0.880 1.508
#> 23 63.91363 113.21699 0.780 1.389
#> 24 71.30611 117.00056 0.851 -1.566
#> 25 64.34327 112.95358 0.806 1.301
#> 26 55.60273 99.62374 0.787 -1.554
#> 27 77.92243 137.86374 0.832 1.322
#> 28 84.94444 145.07731 0.843 1.503
#> 29 80.49036 140.13303 0.813 1.348
#>
#> 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)