Pengenalan EBImage

EBImage adalah salah satu library dari R yang ada didalam package Bioconductor. Didalam library ini terdapat banyak tools atau alat yang bisa digunakan untuk melakukan signal processing, statistical modeling, machine learning dan visualisasi dengan data gambar atau pengolahan citra.

                                if (!requireNamespace("BiocManager", quietly = TRUE))
                                      install.packages("BiocManager")
                                    BiocManager::install("EBImage")

Memanggil Gambar

Code dibawah ini bisa diinputkan untuk pemanggilan gambar. Agar gambar terbaca, maka panggil lokasi dari gambar tersebut berada, maka outputnya akan muncul gambar yang kita inginkan.

library(EBImage)
Image <- readImage("https://blog-images.reddoorz.com/uploads/image/file/3311/mount-rinjani.jpg")
print(Image)
## Image 
##   colorMode    : Color 
##   storage.mode : double 
##   dim          : 1200 844 3 
##   frames.total : 3 
##   frames.render: 1 
## 
## imageData(object)[1:5,1:6,1]
##           [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
## [1,] 0.4039216 0.4156863 0.4156863 0.4078431 0.4039216 0.4039216
## [2,] 0.3960784 0.4078431 0.4117647 0.4000000 0.4000000 0.4039216
## [3,] 0.3882353 0.4000000 0.4000000 0.3960784 0.3960784 0.4078431
## [4,] 0.3843137 0.3921569 0.3960784 0.4000000 0.4039216 0.4039216
## [5,] 0.3882353 0.3882353 0.3921569 0.4078431 0.4117647 0.4039216

Menampilkan Histogram Gambar

hist(Image)

Menyesuaikan Kecerahan (Brightness)

Pada code ini, saya mencoba untuk mengubah kecerahan gambar dengan menggunakan tanda (+) dan (-). Saya menambahkan 0.2 dan mengurangi 0.2 untuk intensitasnya. Lalu, plot disini, digunakan untuk menampilkan kedua gambar tersebut. dapat dilihat perbedaan gambarnya dibawah ini.

Image1 <- Image + 0.2
Image2 <- Image - 0.2
par(mfrow= c(1,2))
plot(Image1)
plot(Image2)

Menambahkan Kontras

Pada code ini, saya mencoba untuk menambahkan kontras pada gambar menggunakan perkalian. Berbeda dengan code sebelumnya yang menambahkan (+) dan (-). Untuk gambar pertama dikali dengan 0.5, dan gambar kedua dikali 2. terlihat perbedaannya pada gambar dibawah ini.

Image3 <- Image * 0.5
Image4 <- Image * 2
par(mfrow = c(1,2))
plot(Image3)
plot(Image4)

Koreksi Gamma

Perlu kita ketahui, Gamma adalah nama dari sebuah operasi nonlinier yang digunakan untuk code dan decode luminance atau tristimulus nilai-nilai dalam vidio atau sistem gambar. Pada gambar pertama menggunakan nilai 2 dan gambar kedua menggunakan nilai 0.7 dengan pengaplikasian simbol (^).

Image5 <- Image ^ 2
Image6 <- Image ^ 0.7
par(mfrow = c(1,2))
plot(Image5)
plot(Image6)

Memotong Gambar (Cropping)

Code dibawah ini digunakan untuk memotong gambar. Rentang gambar yang saya miliki adalah 800:533, sehingga tidsk boleh melebihi angka itu dalam menginputkan.

display(Image[189:500, 95:600,])

Transformasi Spasial

Code dibawah ini akan menampilkan output gambar yang miring. Maka, digunakan code rotate yang telah tersedia dari EBImage.

Imagetr <- translate(rotate(Image, 90), c(90, 0))
display(Imagetr)

Manajemen Warna Pada code ini, color mode yang terlihat pada output sebelumnya adalah ‘color’ akan berubah menjadi ‘grayscale’.

colorMode(Image) <- Grayscale
display(Image)
## Only the first frame of the image stack is displayed.
## To display all frames use 'all = TRUE'.

Image <- readImage("https://blog-images.reddoorz.com/uploads/image/file/3311/mount-rinjani.jpg")
print(Image)
## Image 
##   colorMode    : Color 
##   storage.mode : double 
##   dim          : 1200 844 3 
##   frames.total : 3 
##   frames.render: 1 
## 
## imageData(object)[1:5,1:6,1]
##           [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
## [1,] 0.4039216 0.4156863 0.4156863 0.4078431 0.4039216 0.4039216
## [2,] 0.3960784 0.4078431 0.4117647 0.4000000 0.4000000 0.4039216
## [3,] 0.3882353 0.4000000 0.4000000 0.3960784 0.3960784 0.4078431
## [4,] 0.3843137 0.3921569 0.3960784 0.4000000 0.4039216 0.4039216
## [5,] 0.3882353 0.3882353 0.3921569 0.4078431 0.4117647 0.4039216
print(Image)
## Image 
##   colorMode    : Color 
##   storage.mode : double 
##   dim          : 1200 844 3 
##   frames.total : 3 
##   frames.render: 1 
## 
## imageData(object)[1:5,1:6,1]
##           [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
## [1,] 0.4039216 0.4156863 0.4156863 0.4078431 0.4039216 0.4039216
## [2,] 0.3960784 0.4078431 0.4117647 0.4000000 0.4000000 0.4039216
## [3,] 0.3882353 0.4000000 0.4000000 0.3960784 0.3960784 0.4078431
## [4,] 0.3843137 0.3921569 0.3960784 0.4000000 0.4039216 0.4039216
## [5,] 0.3882353 0.3882353 0.3921569 0.4078431 0.4117647 0.4039216
colorMode(Image) <- Color
display(Image)

Filter

Code ini membuat gambar yang kita inputkan terlihat blur dengan menggunakan low-pass filter dan high-past filter. Code dibawah ini yang menggunakan LOW-PASS filter.

fLow <- makeBrush(21, shape= 'disc', step=FALSE)^2
fLow <- fLow/sum(fLow)
Image.fLow <- filter2(Image, fLow)
display(Image.fLow)

Code dibawah ini yang menggunakan HIGH-PASS filter.

fHigh <- matrix(1, nc = 3, nr = 3)
fHigh[2, 2] <- -8
Image.fHigh <- filter2(Image, fHigh)
display(Image.fHigh)

Daftar Pustaka https://thinkstudioo.blogspot.com/2018/03/analisis-image-menggunakan-ebimage-di-r.html

https://thinkstudioo.blogspot.com/2018/03/analisis-image-menggunakan-ebimage-di-r_6.html