데이터 분석/R
[R] K-means clustering (K-평균 군집화) 2
eunki
2021. 7. 8. 20:29
728x90
사진 데이터 불러오기
library(jpeg)
img <- readJPEG('cat.jpeg')

데이터 확인
class(img) # "array"
dim(img) # 1280 1920 3
3차원 데이터를 2차원으로 펼침
imgdim <- as.vector(dim(img))
imgRGB <- data.frame(
x = rep(1:imgdim[2], each = imgdim[1]),
y = rep(imgdim[1]:1, imgdim[2]),
R = as.vector(img[,,1]),
G = as.vector(img[,,2]),
B = as.vector(img[,,3])
)
head(imgRGB)

색상 개수 축소
# 축소할 색상 클러스터 개수
kClusters <- c(3, 5, 10, 15, 30, 50)
set.seed(1234)
for (i in kClusters) {
img.kmeans <- kmeans(imgRGB[, c("R", "G", "B")], centers = i)
img.result <- img.kmeans$center[img.kmeans$cluster,]
img.array <- array(img.result, dim = imgdim)
writeJPEG(img.array, paste('kmeans_', i, 'clusters.jpeg', sep = ''))
}

728x90