This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
You can also embed plots, for example:
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.
Memunculkan Gambar dan Mengeditnya pada R Studio
Paket magick menyediakan toolkit modern dan sederhana untuk pemrosesan gambar di R. Ini membungkus ImageMagick STL yang merupakan perpustakaan pemrosesan gambar sumber terbuka terlengkap yang tersedia saat ini.
Library ImageMagick memiliki banyak fungsi. Magick memperlihatkan subset yang layak, tetapi tidak mungkin untuk mendokumentasikan semuanya secara detail. Artikel ini memperkenalkan beberapa konsep dasar dan contoh untuk memulai.
Image IO
Apa yang membuat magickbegitu ajaib adalah secara otomatis mengkonversi 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.
Baca dan Tulis
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
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
library(rsvg)
## Linking to librsvg 2.48.8
tiger <- image_read_svg('http://jeroen.github.io/images/tiger.svg', width = 350)
print(tiger)
## format width height colorspace matte filesize density
## 1 PNG 350 350 sRGB TRUE 0 72x72
Jika path adalah nama file, image_write mengembalikan jalur pada kesuksesan sehingga hasilnya dapat disalurkan ke fungsi dengan mengambil jalur file.
Mengkonversi Format
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 Adalah lossy.
tiger_png <- image_convert(tiger, "png")
image_info(tiger_png)
## format width height colorspace matte filesize density
## 1 PNG 350 350 sRGB TRUE 0 72x72
Tampilan
IDE dengan browser web bawaan (seperti RStudio) secara otomatis menampilkan gambar sulap di penampil. Ini menghasilkan lingkungan pengeditan gambar interaktif yang rapi. Sebagai alternatif, di Linux Anda dapat menggunakan image_display untuk mempratinjau gambar di jendela X11. Akhirnya image_browse membuka gambar di aplikasi default sistem Anda untuk tipe tertentu. Metode lain adalah mengonversi gambar menjadi objek raster dan memplotnya pada tampilan grafis R. Namun ini sangat lambat dan hanya berguna dalam kombinasi dengan fungsi plot lainnya.
Transformasi
Cara terbaik untuk memahami transformasi yang tersedia adalah menelusuri contoh-contoh di halaman bantuan transformasi di RStudio. Di bawah ini beberapa contoh untuk memahami apa yang mungkin.
Memotong dan Mengedit
Beberapa fungsi transformasi mengambil parameter geometri yang memerlukan sintaks khusus dari bentuk AxB+C+D di mana setiap elemen bersifat opsional. Beberapa contoh sebagai berikut :
frink <- image_read("https://jeroen.github.io/images/frink.png")
print(frink)
## format width height colorspace matte filesize density
## 1 PNG 220 445 sRGB TRUE 73494 72x72
Border : Berikut adalah perintah untuk membuat tepi pada suatu gambar
image_border(image_background(frink, "hotpink"), "#000080", "20x10")
Trim : Untuk membuat margin pada gambar
image_trim(frink)
Crop : Untuk memotong gambar
image_crop(frink, "100x150+50")
Skala : Untuk melihat gambar dengan skala tertentu
image_scale(frink, "300")
image_scale(frink, "x300")
Rotate : Untuk memutar suatu gambar
image_rotate(frink, 45)
Flip : Untuk Membalik suatu gambar
image_flip(frink)
Flop : Untuk membuat pencerminan secara terbalik pada gambar
image_flop(frink)
Modulate : Untuk mengubah kecerahan, saturasi atau dasar cahaya pada gambar
image_modulate(frink, brightness = 80, saturation = 120, hue = 90)
Fill : Mengubah warna pada gambar
image_fill(frink, "orange", point = "+100+200", fuzz = 20)
Filter dan Efek
ImageMagick juga memiliki banyak efek standar yang patut dicoba.
Blur : untuk memberi efek buram pada gambar
image_blur(frink, 10, 5)
Noise : Untuk memberi efek noise atau titik-titik pada gambar
image_noise(frink)
Charcoal : untuk memberi efek charcoal atau bubuk abu
image_charcoal(frink)
Efek Oilpant dan Efek Negatif (Efek Negatif untuk mengubah gambar menjadi negatif atau warna kebalilkannya)
image_oilpaint(frink)
image_oilpaint(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
## [,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))
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:
image_annotate(frink, "I like R!", size = 70, gravity = "southwest", color = "green")
image_annotate(frink, "CONFIDENTIAL", size = 30, color = "red", boxcolor = "pink",
degrees = 60, location = "+50+100")
image_annotate(frink, "The quick brown fox", font = 'Times', size = 30)
Font yang didukung pada sebagian besar platform termasuk “sans”, “mono”, “serif”, “Times”, “Helvetica”, “Trebuchet”, “Georgia”, “Palatino” atau “Comic Sans”.
Menggabungkan dengan pipes
Each of the image transformation functions returns a modified copy of the original image. It does not affect the original image.
frink <- image_read("https://jeroen.github.io/images/frink.png")
frink2 <- image_scale(frink, "100")
image_info(frink)
## format width height colorspace matte filesize density
## 1 PNG 220 445 sRGB TRUE 73494 72x72
image_info(frink2)
## format width height colorspace matte filesize density
## 1 PNG 100 202 sRGB TRUE 0 72x72
Karenanya untuk menggabungkan transformasi, Anda perlu merantainya:
test <- image_rotate(frink, 90)
test <- image_background(test, "blue", flatten = TRUE)
test <- image_border(test, "red", "10x10")
test <- image_annotate(test, "This is how we combine transformations", color = "white", size = 30)
print(test)
## format width height colorspace matte filesize density
## 1 PNG 465 240 sRGB TRUE 0 72x72
Menggunakan sintaks pipa magrittr membuatnya sedikit lebih mudah dibaca
image_read("https://jeroen.github.io/images/frink.png") %>%
image_rotate(270) %>%
image_background("blue", flatten = TRUE) %>%
image_border("red", "10x10") %>%
image_annotate("The same thing with pipes", color = "white", size = 30)