라일락 꽃이 피는 날

[R] K-means clustering (K-평균 군집화) 2 본문

데이터 분석/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