Nama : Ahmad Ghiffari Fadhil Saputra

NIM : 220605110067

Kelas : A

Mata Kuliah : Linear Algebra

Dosen Pengampuh : Prof. Dr. Suhartono, M.Kom

Jurusan : Teknik Informatika

Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang

=========================================================================================

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

  1. image_crop(image, “100x150+50”): pangkas width:100px dan eight:150px mulai +50px dari kiri
  2. image_scale(image, “200”): mengubah ukuran secara proporsional dengan lebar:200px
  3. image_scale(image,“x200”): mengubah ukuran secara proporsional dengan tinggi:200px
  4. image_fill(image, “blue”, “+100+200”): banjir isi dengan warna birumulai dari titik dix:100, y:200
library(magick)
## Warning: package 'magick' was built under R version 4.2.3
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11
# Example image
kucing <- image_read("kucing.png")
plot(kucing)

# Add 20px left/right and 10px top/bottom
image_border(image_background(kucing, "green"), "#000080", "20x10")

# Trim margins
image_trim(kucing)

# Resize
image_scale(kucing, "300") # width: 300px

image_scale(kucing, "x300") # height: 300px

# Rotate or mirror
image_rotate(kucing, 45)

image_flip(kucing)

image_flop(kucing)

# Brightness, Saturation, Hue
image_modulate(kucing, brightness = 80, saturation = 120, hue = 90)

# Paint the shirt orange
image_fill(kucing, "orange", point = "+100+200", fuzz = 20)

Dengan image_fill kita dapat mengisi mulai dari piksel point. 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.

Filter dan Efek

ImageMagick juga memiliki banyak efek standar :

# Add randomness
image_blur(kucing, 10, 5)

image_noise(kucing)

# Silly filters
image_charcoal(kucing)

image_oilpaint(kucing)

image_negate(kucing)

Konvolusi Kernel

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
##      [,1] [,2] [,3]
## [1,] 0.00 0.25 0.00
## [2,] 0.25 0.00 0.25
## [3,] 0.00 0.25 0.00

Kernel ini mengubah setiap piksel menjadi rata-rata piksel tetangga horizontal dan vertikalnya, yang menghasilkan sedikit efek buram pada gambar sebelah kanan di bawah ini:

img <- image_resize(logo, "300x300")
img_blurred <- image_convolve(img, kern)
image_append(c(img, img_blurred))

atau menggunakan salah satu kernel standar :

img %>% image_convolve('Sobel') %>% image_negate()

img %>% image_convolve('DoG:0,0,2') %>% image_negate()

Anotasi Teks

Akhirnya berguna untuk mencetak beberapa teks di atas gambar:

# Add some text
image_annotate(kucing, "kucing oyen", size = 70, gravity = "southwest", color = "white")

# Customize text
image_annotate(kucing, "OYEN", size = 100, color = "black", boxcolor = "red",
  degrees = 70, location = "+250+100")

# Fonts may require ImageMagick has fontconfig
image_annotate(kucing, "kucing oyen", font = 'Comic Sans', size = 70)

Font yang didukung pada sebagian besar platform meliputi “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.

kucing <- image_read("kucing.png")
kucing2 <- image_scale(kucing, "100")
image_info(kucing)
##   format width height colorspace matte filesize density
## 1   JPEG   152    124       sRGB FALSE     4224   72x72
image_info(kucing2)
##   format width height colorspace matte filesize density
## 1   JPEG   100     82       sRGB FALSE        0   72x72

Karenanya untuk menggabungkan transformasi, Anda perlu merantainya:

test <- image_rotate(kucing, 90)
test <- image_background(test, "yellow", flatten = TRUE)
test <- image_border(test, "orange", "10x10")
test <- image_annotate(test, "This is how we combine transformations", color = "black", size = 30)
print(test)
##   format width height colorspace matte filesize density
## 1   JPEG   144    172       sRGB  TRUE        0   72x72

Menggunakan magrittr sintaks pipa membuatnya sedikit lebih mudah dibaca

image_read("kucing.png") %>%
  image_rotate(270) %>%
  image_background("yellow", flatten = TRUE) %>%
  image_border("orange", "10x10") %>%
  image_annotate("The same thing with pipes", color = "black", size = 30)