imgpalr
패키지를 사용하면 이미지 파일에서 색상 팔레트를 쉽게 만들 수 있습니다.
이미지에서 파생할 색상 팔레트 유형(정성적, 순차적 또는 발산)을 선택합니다.
이미지 색상 분포의 분위수를 잘라낼 수 있습니다.
검정색에 가까운 색상이나 흰색에 가까운 색상은 HSV 공간의 밝기 또는 채도 분포 트리밍과 관계없이 RGB 공간에서 트리밍될 수 있습니다.
순차 팔레트를 생성하면 정렬할 HSV 색상 차원의 순서를 제어할 수도 있습니다.
다음을 사용하여 imgpalr
의 CRAN 릴리스를 설치하십시오.
install.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), 플롯 = TRUE)
# 순차 팔레트image_pal(x[1], 유형 = "seq", k = 2, 채도 = c(0.75, 1), 밝기 = c(0.75, 1), seq_by = "hsv", 플롯 = 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-평균 클러스터링을 사용합니다. 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)#> num [1:317, 1:400, 1:3] 0 0 0 0 0 0 0 0 0 0 ...
이는 색상을 RGB 공간에서 짧은 거리에 있는 색상으로 양자화하려는 경우에 잘 작동하지만, 매우 다른 색상으로 교체하려는 경우에는 2단계 프로세스가 필요합니다. pal2
인수에 동일한 길이의 색상 벡터를 제공하면 이러한 색상은 초기 양자화 이후 pal
의 색상을 대체합니다.
pal2 <- c("darkred", "darkgreen", "tomato", "orange")a <- image_퀀트맵(x, pal, pal2, k = 7, 플롯 = TRUE, show_pal = FALSE)
참고: 이 기능은 큰 k
및/또는 더 큰 이미지의 경우 매우 느릴 수 있습니다.
CRAN에는 중앙값 자르기 알고리즘을 사용하여 이미지에서 주요 색상을 찾는 RImagePalette 패키지도 있습니다.
imgpalr
원래 GitHub의 Palletr 패키지에서 영감을 받았습니다. 두 패키지 모두 k-평균 클러스터링을 사용하여 주요 이미지 색상을 찾지만 색상 팔레트를 조합하는 방법에서는 몇 가지 다른 접근 방식을 취합니다.
팔레트 미리보기(썸네일 추가 없음)는 팔레트를 그리는 데 편리한 기능인 scales::show_col()
기반으로 합니다. 또한 pals::pal.bands()
사용하여 다른 시각적 레이아웃을 사용하여 동일한 작업을 수행할 수도 있습니다.
다른 목적으로 색상 팔레트를 파생시키는 대신 이미지 자체의 색상 속성을 직접 조작하려는 경우 ImageMagick 라이브러리에 대한 바인딩을 제공하는 Magick 패키지를 사용하면 됩니다.
매튜 레오나비치(2024). imgpalr: 이미지에서 색상 팔레트를 만듭니다. R 패키지 버전 0.4.0. https://CRAN.R-project.org/package=imgpalr
기여를 환영합니다. 끌어오기 요청을 통해 GitHub를 통해 기여합니다. 실질적인 기능 추가 또는 변경과 관련된 경우 먼저 문제를 작성해 주세요.
imgpalr
프로젝트는 기여자 행동 강령과 함께 출시되었습니다. 이 프로젝트에 기여함으로써 귀하는 해당 조건을 준수하는 데 동의하게 됩니다.