ANALISIS GAMBAR

Salam Informatika haii!!!

Haniyah || 220605110048 || Teknik Informatika || Uin Maulana Malik Ibrahim Malang ||

library(magick)
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11
library(magick)
# Reading from a local computer.
inp_img <- image_read("https://th.bing.com/th/id/R.014fc07eaab4bd687ee7b629c8663272?rik=QVP%2bnFTzCI8H%2fQ&riu=http%3a%2f%2f2.bp.blogspot.com%2f_Cc3gulUhlvs%2fTOsoFb7qtAI%2fAAAAAAAACr0%2fDkQKKvMpbUU%2fw1200-h630-p-k-no-nu%2fgambar-binatang.jpg&ehk=k3g8Gan9C8wQbpXMkX9WxMDXq9JGLREez3owzASfzXg%3d&risl=&pid=ImgRaw&r=0")
plot(inp_img)

#menapilkan spesifikasi gambar sesuai gambar yang di masukan
image_info(inp_img)
##   format width height colorspace matte filesize density
## 1   JPEG   700    562       sRGB FALSE    64536   72x72
#mengganti kuliatas atau mengedit gambar sepeti brignest saturation dan juga hue

mod_img <- image_modulate(inp_img, brightness = 120, saturation = 700, hue = 20)
plot(mod_img)

mod_img <- image_modulate(inp_img, brightness = 190, saturation = 70, hue = 20)
plot(mod_img)

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
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)

Kode tersebut akan membuat dua plot gambar dengan menggunakan objek “Image”. Objek tersebut kemudian dioperasikan dengan operator pangkat (^) dan disimpan pada dua objek baru, yaitu “Image5” dan “Image6”. Objek “Image5” akan berisi gambar yang merupakan kuadrat dari gambar pada objek “Image”, sedangkan objek “Image6” akan berisi gambar yang dipangkatkan 0.7 dari gambar pada objek “Image”.

Selanjutnya, fungsi “par()” digunakan untuk mengatur tata letak plot dalam satu bingkai gambar. Dalam hal ini, “mfrow = c(1,2)” akan membuat bingkai gambar dengan 1 baris dan 2 kolom, sehingga plot gambar pada “Image5” dan “Image6” akan ditampilkan secara horizontal berdampingan.

Kemudian, fungsi “plot()” digunakan dua kali untuk menampilkan plot gambar pada objek “Image5” dan “Image6” secara bergantian pada bingkai gambar yang telah dibuat sebelumnya.

Secara keseluruhan, kode tersebut digunakan untuk membuat dua plot gambar dari objek “Image” yang telah dioperasikan dengan operator pangkat dan ditampilkan dalam satu bingkai gambar.

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)

Kode tersebut akan membuat gambar baru dengan menggunakan objek “Image”. Objek tersebut kemudian dirotasi sebesar 90 derajat menggunakan fungsi “rotate()” dan hasil rotasi tersebut disimpan pada objek baru yang disebut “Imagetr”. Selanjutnya, gambar pada objek “Imagetr” akan dipindahkan sejauh 90 piksel ke kanan dan 0 piksel ke bawah menggunakan fungsi “translate()”. Hasil dari operasi tersebut akan ditampilkan menggunakan fungsi “display()”.

Namun, untuk menjalankan kode tersebut, perlu diketahui terlebih dahulu fungsi “rotate()” dan “translate()” yang digunakan. Fungsi “rotate()” digunakan untuk memutar gambar sebesar sudut tertentu, sedangkan fungsi “translate()” digunakan untuk memindahkan gambar sejauh vektor tertentu.

Dalam kode tersebut, karena gambar pada objek “Image” diputar sebesar 90 derajat sebelum dipindahkan, maka gambar pada objek “Imagetr” akan berbeda dengan gambar pada objek “Image”. Selain itu, hasil dari pergeseran gambar pada objek “Imagetr” juga tergantung pada ukuran gambar dan jarak perpindahan yang ditentukan oleh vektor perpindahan pada fungsi “translate()”.

colorMode

Manajemen Warna Pada code ini, color mode yang terlihat pada output sebelumnya adalah ‘color’ akan berubah menjadi ‘grayscale’. Color mode di RStudio merujuk pada skema warna yang digunakan oleh editor teks untuk menyoroti sintaksis kode yang berbeda dalam bahasa R. RStudio menyediakan beberapa mode warna default yang dapat dipilih oleh pengguna berdasarkan preferensi mereka.

Beberapa mode warna default yang tersedia di RStudio antara lain “Default”, “Cobalt”, “Solarized Light”, dan “Tomorrow Night Bright”. Pengguna juga dapat mengunduh dan memasang tema warna dari sumber eksternal untuk RStudio jika mereka menginginkan mode warna yang lebih kustom.

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

## 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)

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