R Markdown

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

Including Plots

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)