Paket imgpalr
memudahkan pembuatan palet warna dari file gambar.
Pilih jenis palet warna yang akan diperoleh dari suatu gambar: kualitatif, berurutan, atau divergen.
Kuantitas distribusi warna gambar dapat dipangkas.
Warna mendekati hitam atau mendekati putih dapat dipangkas dalam ruang RGB, tidak bergantung pada pemangkasan distribusi kecerahan atau saturasi dalam ruang HSV.
Membuat palet berurutan juga menawarkan kontrol atas urutan dimensi warna HSV untuk diurutkan.
Instal rilis CRAN dari imgpalr
dengan
instal.paket("imgpalr")
Instal versi pengembangan dari GitHub dengan
# install.packages("remotes")remotes::install_github("leonawicz/imgpalr")
Fungsi utamanya adalah image_pal()
. Ia menerima gambar PNG, JPG, BMP atau GIF (frame pertama) baik dari disk atau URL. Ini mengembalikan vektor warna yang menentukan palet berdasarkan gambar dan argumen fungsi Anda yang lain. Anda juga dapat mengatur plot = TRUE
untuk memplot pratinjau palet, yang menyertakan thumbnail gambar sumber untuk referensi visual.
Contoh di bawah ini menawarkan beberapa pertimbangan umum yang perlu dilakukan saat mengambil palet warna dari gambar arbitrer.
Dalam kumpulan contoh pertama ini, palet yang berbeda, kualitatif, dan berurutan dihasilkan dari gambar yang sama dan sambil memvariasikan beberapa pengaturan tambahan.
perpustakaan (imgpalr) set.seed(1)x <- paste0(system.file(paket = "imgpalr"), "/", c("biru-kuning", "ungu", "warna"), ".jpg")# Tiga jenis palet, satu gambar# Palet yang berbedaimage_pal(x[1], type = "div", saturation = c(0.75 , 1), kecerahan = c(0,75, 1), plot = BENAR)
# Paletteimage_pal(x[1] kualitatif, type = "qual", bw = c(0.25, 0.9), plot = TRUE)
# Paletgambar_pal(x[1] berurutan, ketik = "seq", k = 2, saturasi = c(0,75, 1), kecerahan = c(0,75, 1), seq_by = "hsv", plot = TRUE)
Dalam gambar uji ini, rona bervariasi dalam rentang yang sempit. Palet berurutan masuk akal di sini, tetapi belum tentu paling baik diurutkan berdasarkan rona. Melakukan hal ini masih menunjukkan urutan warna yang dapat dilihat, namun jauh lebih sulit untuk membedakannya. Mengurutkan palet terlebih dahulu berdasarkan saturasi atau kecerahan membuat palet berurutan jauh lebih baik dalam hal ini.
image_pal(x[2], ketik = "seq", seq_by = "hsv", plot = TRUE)
image_pal(x[2], ketik = "seq", seq_by = "svh", plot = TRUE)
image_pal(x[2], ketik = "seq", seq_by = "vsh", plot = BENAR)
Menggunakan gambar dengan beberapa rona yang menonjol, palet yang berbeda tidak masuk akal di sini. Urutan mungkin paling baik diurutkan berdasarkan rona.
Perhatikan pada gambar kedua di bawah, Anda juga dapat mengatur quantize = TRUE
untuk menampilkan gambar thumbnail referensi terkuantisasi warna berdasarkan palet turunan. Ini memanfaatkan fungsi image_quantmap()
. Daripada hanya mengkuantisasi gambar, ia melakukannya sambil memetakan warna gambar apa pun ke palet warna apa pun berdasarkan jarak terdekat dalam ruang RGB.
image_pal(x[3], ketik = "qual", kecerahan = c(0,4, 1), plot = TRUE)
image_pal(x[3], ketik = "seq", bw = c(0.2, 1), saturasi = c(0.2, 1), plot = BENAR, kuantisasi = BENAR)
Pembuatan palet menggunakan pengelompokan k-means; hasilnya berbeda setiap kali Anda memanggil image_pal()
. Jika palet yang Anda peroleh terasa tidak pas, bahkan dengan argumen yang tetap, Anda dapat menjalankannya lagi untuk mendapatkan palet yang berbeda. Tergantung pada pengaturan dan sifat gambar sumber, ini mungkin sedikit berubah. Jika Anda memerlukan palet yang dapat direproduksi, atur argumen seed
. Pada contoh di atas, seed disetel secara global agar tidak perlu menyetelnya di setiap panggilan ke image_pal()
.
Anda dapat mengkuantisasi warna dalam gambar menggunakan image_quantmap()
secara langsung. Pilih vektor warna apa saja. Setiap piksel memiliki warna yang dipetakan ke warna mana pun yang paling dekat dengan ruang RGB. Array RGB dikembalikan. Anda dapat memplot gambar dengan palet.
x <- system.file("biru-kuning.jpg", paket = "imgpalr")pal <- c("hitam", "navyblue", "dodgerblue", "kuning")a <- image_quantmap(x, sobat , k = 7, alur = BENAR)
str(a)#> angka [1:317, 1:400, 1:3] 0 0 0 0 0 0 0 0 0 0 ...
Ini berfungsi dengan baik jika Anda ingin mengkuantisasi warna menjadi warna-warna dalam jarak dekat dalam ruang RGB, namun jika Anda juga ingin menukarnya dengan warna yang sangat berbeda, ini harus menjadi proses dua langkah. Jika Anda memberikan vektor warna yang panjangnya sama ke argumen pal2
, warna ini akan menggantikan warna di pal
setelah kuantisasi awal.
sobat2 <- c("merah tua", "hijau tua", "tomat", "oranye")a <- image_quantmap(x, sobat, sobat2, k = 7, plot = BENAR, show_pal = SALAH)
Catatan: Fungsi ini bisa sangat lambat untuk k
besar dan/atau gambar lebih besar.
Ada juga paket RImagePalette di CRAN, yang menggunakan algoritma median cut untuk menemukan warna dominan dalam sebuah gambar.
imgpalr
awalnya terinspirasi oleh paket paleter di GitHub. Kedua paket menggunakan pengelompokan k-means untuk menemukan warna gambar utama, tetapi menggunakan beberapa pendekatan berbeda dalam metode menyusun palet warna.
Pratinjau palet (tanpa penambahan thumbnail) didasarkan pada scales::show_col()
, yang merupakan fungsi praktis untuk merencanakan palet. Anda juga dapat menggunakan pals::pal.bands()
untuk melakukan hal yang sama menggunakan tata letak visual yang berbeda.
Jika Anda ingin secara langsung memanipulasi properti warna suatu gambar untuk kepentingannya sendiri daripada mendapatkan palet warna untuk tujuan lain, Anda dapat melakukannya menggunakan paket magick, yang menyediakan pengikatan ke perpustakaan ImageMagick.
Matthew Leonawicz (2024). imgpalr: Membuat Palet Warna dari Gambar. Paket R versi 0.4.0. https://CRAN.R-project.org/package=imgpalr
Kontribusi dipersilakan. Berkontribusi melalui GitHub melalui permintaan tarik. Harap buat masalah terlebih dahulu jika berkaitan dengan penambahan atau perubahan fitur substantif.
Harap dicatat bahwa proyek imgpalr
dirilis dengan Kode Etik Kontributor. Dengan berkontribusi pada proyek ini, Anda setuju untuk mematuhi ketentuannya.