Nama : Renata Amalia Putri

NIM : 220605110074

Kelas : B

Mata Kuliah : Linear Algebra

Dosen Pengampu : Prof. Dr. Suhartono, M.kom

Jurusan : Teknik Informatika

Instansi : UIN Maulana Malik Ibrahim Malang

Aritmatika Matriks

Di pembahasan ini mengenai tentang bagaimana menyelesaikan sistem persamaan linear dengan cara operasi matriks dapat berguna secara luas. Sebagai contohnya dalam bagian contoh pengantar, ini bisa digunakan untuk memproses gambar. Operasi ini berhubungan dengan mengubah atau mengedit gambar dengan pengubah linear.

Contoh Pengantar dari Statistika

Pada contoh ini, menggunakan package magick dalam pemrograman R untuk memperlihatkan pemrosesan gambar tanpa secara merinci. Pertama yang harus dilakukan adalah mengunduh package magick. Lalu, unggah package magick di R. Seperti di bawah ini :

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

Gambar yang ditampilkan merupakan warna asli dari karakter anime. Agar bisa untuk membaca gambar di R dari penyimpanan lokal atau website, maka bisa seperti ini:

library(magick)
#Membaca dari website 
inp_img <- image_read("https://s2.narvii.com/image/xj2alm2kkxp7togi6xzhlnqil23vu6ds_hq.jpg")

Jika mengambil gambar dari website maka harus menggunakan tanda petik dua (“url”) yang mana “url” itu alamat dari web untuk gambar.

Apabila ingin mengetahui informasi mengenai gambarnya, maka menggunakan fungsi image_info. Bisa diketik seperti ini:

image_info(inp_img)
##   format width height colorspace matte filesize density
## 1   JPEG   960    540       sRGB FALSE    34786   72x72

Dan untuk memplot atau menampilkan gambarnya, hanya dengan memanggil fungsi plot(). Sebagai contoh berikut ini:

plot(inp_img)

Untuk memodifikasi atau mengedit gambar tadi, maka dapat dilakukan dengan fungsi image_modulate(). Dan akan membuat gambar/image baru “mod_img”.

# mengganti kualitas atau mengedit gambar seperti kecerahan/brightness, saturation dan hue
mod_img <- image_modulate(inp_img, brightness = 65, saturation = 50, hue = 100)
plot(mod_img)

Di balik proses ini, package magick menggunakan transformasi linear (pengubah) dari matriks. Pada tahap pemrosesan, mengkonversi sebuah gambar sebagai matriks yang besar dengan angka. Setiap piksel merupakan entri dari matkriks. Nilai yang ditetapkan untuk setiap entri adalah skala kegelapan atau nomor warna. Hasilnya, setiapa pemrosesan pada gambar adalah operasi pada matriks. Contohnya adalah jika ingin mengubah warna, maka memberikan nilai yang berbeda pada entri matriks. Jika ingin memutar gambar, maka sama dengan menerapkan peta linear ke matriks. Jika ingin mengompres gambar, maka bisa dengan memotong beberapa nilai dnegan analisis komponen utama.

mod_img <- image_modulate(inp_img, brightness = 65, saturation = 15, hue = 500)
plot(mod_img)

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

BiocManager::install("EBImage")
## Bioconductor version 3.16 (BiocManager 1.30.20), R 4.2.3 (2023-03-15 ucrt)
## Warning: package(s) not installed when version(s) same as or greater than current; use
##   `force = TRUE` to re-install: 'EBImage'
## Old packages: 'cli', 'prodlim', 'ps'
library(EBImage)
Image <- readImage("https://i1.wp.com/myschoolscholarships.org/wp-content/uploads/2018/05/Stanford-University.jpg")
print(Image)
## Image 
##   colorMode    : Color 
##   storage.mode : double 
##   dim          : 1340 891 3 
##   frames.total : 3 
##   frames.render: 1 
## 
## imageData(object)[1:5,1:6,1]
##          [,1]     [,2]     [,3]     [,4]     [,5]     [,6]
## [1,] 0.572549 0.572549 0.572549 0.572549 0.572549 0.572549
## [2,] 0.572549 0.572549 0.572549 0.572549 0.572549 0.572549
## [3,] 0.572549 0.572549 0.572549 0.572549 0.572549 0.572549
## [4,] 0.572549 0.572549 0.572549 0.572549 0.572549 0.572549
## [5,] 0.572549 0.572549 0.572549 0.572549 0.572549 0.572549
hist(Image)

Mengatur Kecerahan (Brightness)

Pada gambar di bawah ini, dapat menyesuaikan kecerahan (brightness) dengan menggunakan tanda plus(+) dan minus(-). Di bawah ini, intensitas gambarnya ditambah menjadi +0.10 dan dikurangi menjadi -0.05. Untuk menampilkan gambarnya maka menggunakan fungsi plot(). Bisa dilihat perbedaan dari keduanya di bawah ini.

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

Mengatur Kontras (Contrast)

Di bahasa pemrograman R, dapat mengatur tingkatan kontras pada sebuah gambar. Untuk mengatur kontras menggunakan perkalian (*). Di gambar pertama (Image3) dikali dengan 0.69 dan gambar kedua (Image4) dikali dengan 1.5, bisa dilihat perbedaannya pada gambar di bawah ini.

Image3 <- Image * 0.69
Image4 <- Image * 1.5
par(mfrow = c(3,2))
plot(Image3)
plot(Image4)

Koreksi Gamma (Gamma Correction)

Koreksi gamma adalah nama operasi nonlinear yang digunakan untuk membuat kode atau mendekode nilai piksel dalam gambar. Koreksi gamma merupakan faktor keteduhan yang mempengaruhi pemetaan antara nilai intensitas (tingkat keabuan) input dan output sehingga pemetaan bisa tidak linear. Atau bisa juga tingkat pencahayaan dari warna paling terang ke paling gelap pada layar.

Koreksi gamma adalah sebuah teknik yang digunakan untuk mengatur kecerahan dan kontras gambar atau video digital. Berkaitan dengan pengubahan nilai gamma, merupakan parameter yang menentukan hubungan antara pencahayaan gambar dan nilai pikselnya. Lebih sederhananya adalah cara untuk membuat gambar kelihatan lebih alami dengan mengatur tingkat kecerahan dan kontras.

Koreksi gamma menggunakan tanda pangkat (^). Di gambar pertama (Image5) menggunakan nilai 0.2 dan gambar kedua (Image6) menggunakan nilai 2. Perbedaannya dapat dilihat pada berikut ini.

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

plot(Image6)

Memotong Gambar (Crop)

Untuk memotong gambar dapat menggunakan kode di bawah ini. Tetapi ada aturan atau ukurannya jadi tidak bisa melebihi ukuran tersebut. Ukuran yang dimaksud adalah rentang gambar yang dimiliki harus diperhatika.

display(Image[500:1000, 200:700,])

Transformasi Spesial (Special Transformation)

Pada transformasi spesial menampilkan output gambar yang bisa miring. Dengan itu, menggunakan kode rotate yang telah disediakan oleh EBImage. Kodenya seperti di bawah ini.

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

Mengatur Warna (Color Management)

Kode ini menunjukkan bahwa color mode pada tampilan gambar sebelumnya adalah ‘color’ yang akan diubah menjadi ‘grayscale’. Tampilan dan kodenya bisa dilihat di bawah ini.

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

Dan color mode selanjutnya adalah ‘color’. Dapat dilihat perbedaannya antara atas dan bawah.

colorMode(Image) <- Color
display(Image)

Filter

Pada bagian filter, maka akan menampilkan gambar yang diinput menjadi terlihat blur atau buram dengan menggunakan Low Pass Filter dan High Past Filter. Pertama, di bawah ini bagaimana mengaplikasikan Low Pass Filter ke gambar di R.

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

Lalu, berikutnya bagaimana menggunakan High Pass Filter pada gambar di R.

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


         Daftar Pustaka

Yoshida, Ruriko. (2021). Linear Algebra and Its Applications with R. CRC Press.