Nama = Izza Syahri Muharram || Nim = 220605110073 || Mata kuliah = Linear Algebra || Dosen Pengampu = Prof. Dr. SUHARTONO, M.Kom || Teknik Informatika || Universitas Islam Negeri Malang

================================================== Paket CRAN biner bekerja di luar kotak dan mengaktifkan fitur paling penting. Gunakan magick_config untuk melihat fitur dan format mana yang didukung oleh versi ImageMagick Anda.

library(magick)
str(magick::magick_config())

Apa yang membuat magick begitu ajaib adalah secara otomatis mengonversi dan merender semua format gambar umum. ImageMagick mendukung lusinan format dan secara otomatis mendeteksi jenisnya. Gunakan magick::magick_config() untuk membuat daftar format yang didukung oleh versi ImageMagick Anda.

Gambar dapat dibaca langsung dari jalur file, URL, atau vektor mentah dengan data gambar dengan image_read. Fungsi image_info menunjukkan beberapa data meta tentang gambar, mirip dengan utilitas baris perintah imagemagick mengidentifikasi.

konvert Magick menyimpan gambar dalam memori dalam format aslinya. Tentukan parameter format image_write untuk mengonversi ke format lain. Anda juga dapat mengonversi gambar secara internal ke format lain sebelumnya, sebelum menerapkan transformasi. Ini bisa berguna jika format asli Anda lossy.

Beberapa fungsi transformasi mengambil parameter geometri yang memerlukan sintaks khusus dari bentuk AxB+C+D di mana setiap elemen bersifat opsional. Beberapa contoh:

image_crop(image, “100x150+50”): crop out width:100px and height:150px starting +50px from the left image_scale(image, “200”): resize proportionally to width: 200px image_scale(image, “x200”): resize proportionally to height: 200px image_fill(image, “blue”, “+100+200”): flood fill with blue starting at the point at x:100, y:200 image_border(frink, “red”, “20x10”): adds a border of 20px left+right and 10px top+bottom

frink <- image_read("https://jeroen.github.io/images/frink.png")
print(frink)
image_border(image_background(frink, "hotpink"), "#000080", "20x10")
image_crop(frink, "100x150+50")
image_scale(frink, "300")
image_rotate(frink, 45)
image_modulate(frink, brightness = 80, saturation = 120, hue = 90)

Dengan image_fill kita dapat mengisi banjir mulai dari titik piksel. Parameter fuzz memungkinkan isian menyilang untuk piksel yang berdekatan dengan warna serupa. Nilainya harus antara 0 dan 256^2 menentukan jarak geometris maksimal antara warna yang dianggap sama. Di sini kami memberi profesor frink kemeja oranye untuk Piala Dunia.

Filter dan efek ImageMagick juga memiliki banyak efek standar yang patut dicoba.

image_blur(frink, 10, 5)
image_noise(frink)
image_charcoal(frink)
image_oilpaint(frink)
image_negate(frink)

Kernel Convolution

Fungsi image_convolve() menerapkan kernel di atas gambar. Konvolusi kernel berarti bahwa setiap nilai piksel dihitung ulang menggunakan jumlah lingkungan berbobot yang ditentukan dalam matriks kernel. Sebagai contoh mari kita lihat kernel sederhana ini:

kern <- matrix(0, ncol = 3, nrow = 3)
kern[1, 2] <- 0.25
kern[2, c(1, 3)] <- 0.25
kern[3, 2] <- 0.25
kern

Anotasi teks Akhirnya berguna untuk mencetak beberapa teks di atas gambar

image_annotate(frink, "I LOVE YOU", size = 30, gravity = "southwest", color = "green")
image_annotate(frink, "WARNING", size = 30, color = "red", boxcolor = "pink",
  degrees = 60, location = "+50+100")

Font yang didukung pada sebagian besar platform termasuk “sans”, “mono”, “serif”, “Times”, “Helvetica”, “Trebuchet”, “Georgia”, “Palatino” atau “Comic Sans”.

Menggabungkan dengan pipa:

Setiap fungsi transformasi gambar mengembalikan salinan yang dimodifikasi dari gambar asli. Itu tidak mempengaruhi gambar asli

frink <- image_read("https://jeroen.github.io/images/frink.png")
frink2 <- image_scale(frink, "100")
image_info(frink)
image_info(frink2)
test <- image_rotate(frink, 90)
test <- image_background(test, "blue", flatten = TRUE)
test <- image_border(test, "red", "10x10")
test <- image_annotate(test, "HALO EVERYBODY ", color = "white", size = 30)
print(test)

Menggunakan sintaks pipa magrittr membuatnya sedikit lebih mudah dibaca

Vektor Gambar: Contoh di atas menyangkut gambar tunggal. Namun semua fungsi dalam sulap telah divektorisasi untuk mendukung bekerja dengan lapisan, komposisi, atau animasi.

Metode dasar standar [ [[, c() dan length() digunakan untuk memanipulasi vektor gambar yang kemudian dapat diperlakukan sebagai lapisan atau bingkai.

earth <- image_read("https://jeroen.github.io/images/earth.gif") %>%
  image_scale("500x") %>%
  image_quantize(128)

length(earth)
earth
head(image_info(earth))
rev(earth) %>% 
  image_flip() %>% 
  image_annotate("meanwhile in Australia", size = 20, color = "white")

Lapisan Kita dapat menumpuk lapisan di atas satu sama lain seperti yang kita lakukan di Photoshop:

bigdata <- image_read('https://jeroen.github.io/images/bigdata.jpg')
frink <- image_read("https://jeroen.github.io/images/frink.png")
logo <- image_read("https://jeroen.github.io/images/Rlogo.png")
img <- c(bigdata, logo, frink)
img <- image_scale(img, "300x300")
image_info(img)

Mosaik mencetak gambar di atas satu sama lain, memperluas kanvas keluaran sedemikian rupa sehingga semuanya pas:

image_mosaic(img)

Perataan menggabungkan lapisan menjadi satu gambar yang memiliki ukuran gambar pertama:

image_flatten(img)
image_flatten(img, 'Add')
image_flatten(img, 'Modulate')
image_flatten(img, 'Minus')

Menggabungkan Menambahkan berarti hanya menempatkan bingkai di samping satu sama lain:

image_append(image_scale(img, "100"), stack = TRUE)
bigdatafrink <- image_scale(image_rotate(image_background(frink, "none"), 300), "x200")
image_composite(image_scale(bigdata, "x400"), bigdatafrink, offset = "+180+100")

Halaman Saat membaca dokumen PDF, setiap halaman menjadi elemen vektor. Perhatikan bahwa PDF dirender saat membaca sehingga Anda harus segera menentukan kepadatannya.

manual <- image_read_pdf('https://cloud.r-project.org/web/packages/magick/magick.pdf', density = 72)
image_info(manual)

Animasi Alih-alih memperlakukan elemen vektor sebagai lapisan, kita juga bisa menjadikannya bingkai dalam animasi!

banana <- image_read("https://jeroen.github.io/images/banana.gif")
banana <- image_scale(banana, "150")
image_info(banana)
# Background image
background <- image_background(image_scale(logo, "200"), "white", flatten = TRUE)

# Combine and flatten frames
frames <- image_composite(background, banana, offset = "+70+30")

# Turn frames into animation
animation <- image_animate(frames, fps = 10, optimize = TRUE)
print(animation)

Menggambar dan Grafik Tambahan yang relatif baru untuk paket ini adalah perangkat grafis R asli yang menghasilkan objek gambar tenung. Ini dapat digunakan seperti perangkat biasa untuk membuat plot, atau sebagai alternatif untuk membuka perangkat yang menarik ke gambar yang ada menggunakan koordinat piksel.

Perangkat grafis Fungsi image_graph() membuka perangkat grafis baru yang mirip dengan mis. png() atau x11(). Ini mengembalikan objek gambar yang plotnya akan ditulis. Setiap “halaman” di perangkat plotting akan menjadi bingkai di objek gambar.

fig <- image_graph(width = 400, height = 400, res = 96)
ggplot2::qplot(mpg, wt, data = mtcars, colour = cyl)
dev.off()
out <- image_composite(fig, frink, offset = "+70+30")
print(out)

Perangkat menggambar Cara lain untuk menggunakan perangkat grafis adalah dengan menggambar di atas gambar yang keluar menggunakan koordinat piksel.

img <- image_draw(frink)
rect(20, 20, 200, 100, border = "red", lty = "dashed", lwd = 5)
abline(h = 300, col = 'blue', lwd = '10', lty = "dotted")
text(30, 250, "Hoiven-Glaven", family = "monospace", cex = 4, srt = 90)
palette(rainbow(11, end = 0.9))
symbols(rep(200, 11), seq(0, 400, 40), circles = runif(11, 5, 35),
  bg = 1:11, inches = FALSE, add = TRUE)
dev.off()
print(img)

Grafik Animasi Perangkat grafis mendukung banyak bingkai yang membuatnya mudah untuk membuat grafik animasi. Kode di bawah ini menunjukkan bagaimana Anda akan mengimplementasikan contoh dari paket gganimate yang sangat keren menggunakan perangkat grafis magick.

library(gapminder)
library(ggplot2)

datalist <- split(gapminder, gapminder$year)
out <- lapply(datalist, function(data){
  p <- ggplot(data, aes(gdpPercap, lifeExp, size = pop, color = continent)) +
    scale_size("population", limits = range(gapminder$pop)) + geom_point() + ylim(20, 90) + 
    scale_x_log10(limits = range(gapminder$gdpPercap)) + ggtitle(data$year) + theme_classic()
  print(p)
})
dev.off()

print(animation)

Gambar Raster Gambar magick juga dapat dikonversi menjadi objek raster untuk digunakan dengan perangkat grafis R. Dengan demikian kita dapat menggabungkannya dengan alat grafis lainnya. Namun harap diperhatikan bahwa perangkat grafis R sangat lambat dan memiliki sistem koordinat yang sangat berbeda yang mengurangi kualitas gambar.

raster basis R Base R memiliki format as.raster yang mengubah gambar menjadi vektor string. Makalah Raster Images in R Graphics oleh Paul Murrell memberikan gambaran umum yang bagus.

Paket grid Paket grid mempermudah overlay raster pada perangkat grafis tanpa harus menyesuaikan koordinat x/y dari plot.

library(ggplot2)
library(grid)
qplot(speed, dist, data = cars, geom = c("point", "smooth"))

*REFERENSI

  1. Yoshida.Ruriko.2021.Linear Algebra and Its Applications With R.London. CRC Press.
  2. https://cran.r-project.org/web/packages/magick/vignettes/intro.html#Base_R_rasters