imgpalr
包可以輕鬆地從圖像檔案中建立調色板。
選擇從影像中派生的調色板類型:定性、順序或發散。
可以修剪影像顏色分佈的分位數。
可以在 RGB 空間中修剪接近黑色或接近白色的顏色,而與 HSV 空間中修剪亮度或飽和度分佈無關。
建立順序調色板還可以控制要排序的 HSV 顏色維度的順序。
安裝imgpalr
的 CRAN 版本
安裝.packages(“imgpalr”)
從 GitHub 安裝開發版本
# install.packages("remotes")remotes::install_github("leonawicz/imgpalr")
主要函數是image_pal()
。它接受來自磁碟或 URL 的 PNG、JPG、BMP 或 GIF(第一幀)圖像。它會傳回一個顏色向量,根據圖像和其他函數參數定義調色板。您也可以設定plot = TRUE
來繪製調色盤的預覽,其中包含用於視覺參考的來源影像縮圖。
下面的範例提供了從任意影像衍生調色板時需要考慮的一些典型注意事項。
在第一組範例中,從同一圖像產生不同的、定性的和連續的調色板,同時改變一些附加設定。
圖書館(imgpalr) set.seed(1)x <- Paste0(system.file(package = "imgpalr"), "/", c("blue-yellow", "purples", "colors"), ".jpg")# 三種調色盤類型,一張圖片# 發散調色盤image_pal(x[1], type = "div" , Saturation = c(0.75 , 1), 亮度 = c(0.75, 1), 繪圖 = TRUE)
# 定性調色盤image_pal(x[1], type = "qual", bw = c(0.25, 0.9),plot = TRUE)
# 順序調色盤image_pal(x[1], type = "seq", k = 2, 飽和度= c(0.75, 1), 亮度= c(0.75, 1), seq_by = "hsv",plot = TRUE )
在此測試影像中,色調在很窄的範圍內變化。在這裡,順序調色板是明智的,但不一定最好按色調排序。這樣做仍然可以顯示出可感知的顏色順序,但更難以辨別。在這種情況下,首先按飽和度或亮度對調色板進行排序可以得到更好的順序調色板。
image_pal(x[2],類型 =“seq”,seq_by =“hsv”,繪圖 = TRUE)
image_pal(x[2],類型 =“seq”,seq_by =“svh”,繪圖 = TRUE)
image_pal(x[2],類型 =“seq”,seq_by =“vsh”,繪圖 = TRUE)
使用具有多種突出色調的圖像,不同的調色板在這裡是不明智的。順序可能最好按色調排序。
請注意,在下面的第二張圖中,您也可以設定quantize = TRUE
以顯示基於衍生調色盤的顏色量化參考縮圖。這利用了image_quantmap()
函數。它不僅量化圖像,還根據 RGB 空間中的最近距離將任何圖像的顏色映射到任意調色板。
image_pal(x[3], 類型 = "qual", 亮度 = c(0.4, 1), 繪圖 = TRUE)
image_pal(x[3], 型態 = "seq", bw = c(0.2, 1), 飽和度 = c(0.2, 1), 繪圖 = TRUE,量化 = TRUE)
調色板產生使用k-means聚類;每次呼叫image_pal()
時結果都會不同。如果您獲得的調色板感覺不正確,即使使用固定參數,您也可以再次運行它以獲得不同的調色板。根據來源影像的設定和性質,它可能會發生很大的變化。如果您需要可重現的調色板,請設定seed
參數。在上面的範例中,種子是全域設定的,以避免每次呼叫image_pal()
時都進行設定。
您可以直接使用image_quantmap()
來量化影像中的顏色。選擇任何顏色向量。每個像素的顏色都會對應到 RGB 空間中最接近的顏色。傳回 RGB 數組。您可以使用調色板繪製圖像。
x <- system.file("blue-yellow.jpg", package = "imgpalr")pal <- c("black", "navyblue", "dodgerblue", "yellow")a <- image_quantmap(x, pal ,k = 7,繪圖= TRUE)
str(a)#> 數字 [1:317, 1:400, 1:3] 0 0 0 0 0 0 0 0 0 0 ...
如果您想將顏色量化為 RGB 空間中距離較近的顏色,則此方法非常有效,但如果您也想將它們交換為非常不同的顏色,則這應該是一個兩步驟過程。如果您向pal2
參數提供等長的顏色向量,這些顏色將在初始量化後替換pal
中的顏色。
pal2 <- c("深紅色", "深綠色", "番茄", "橘色")a <- image_quantmap(x, pal, pal2, k = 7,plot = TRUE, show_pal = FALSE)
注意:對於大k
和/或更大的圖像,此函數可能會非常慢。
CRAN 上還有 RImagePalette 套件,它使用中值切割演算法來尋找影像中的主色。
imgpalr
最初的靈感來自 GitHub 上的調色板包。這兩個套件都使用 k 均值聚類來查找關鍵影像顏色,但在組裝調色板的方法中採用了一些不同的方法。
調色板預覽(不添加縮圖)基於scales::show_col()
,這是繪製調色板的便捷函數。您也可以使用pals::pal.bands()
使用不同的視覺佈局來執行相同的操作。
如果您想直接操作圖像的顏色屬性,而不是為了其他目的而派生調色板,則可以使用 magick 套件來實現,該套件提供了到 ImageMagick 庫的綁定。
馬修·萊昂納維奇 (2024)。 imgpalr:從圖像建立調色板。 R 套件版本 0.4.0。 https://CRAN.R-project.org/package=imgpalr
歡迎貢獻。透過拉取請求透過 GitHub 做出貢獻。如果涉及任何實質功能新增或更改,請先建立問題。
請注意, imgpalr
專案是隨貢獻者行為準則一起發布的。透過為該項目做出貢獻,您同意遵守其條款。