Programing/R- programming

R을 이용해서 Image augmentation 하기.

sosal 2017. 10. 3. 09:06
반응형

R을 이용해서 Image augmentation 하기.


1. Size 조절

2. 각도 조절

3. Flip (horizontal / vertical)


현재 폴더에 있는 모든 이미지를 불러온 후,

3가지를 수행하여 augmentation 하여 생성된 샐운 이미지를 저장하는 코드입니다.




library(OpenImageR)

setwd("C:/Users/Lee/imgData/") #이미지가 존재하는 경로를 입력


files <- dir()

files # 현재 폴더에 존재하는 5개의 이미지.

[1] "image10001.png" "image10002.png" "image10003.png" "image10004.png" "image10005.png"






# 모든 이미지를 불러와, Images 라는 변수에 list 형태로 저장합니다.

Images <- list()

for( file in files) Images[[file]] <- readImage(file)


imageShow( Images[[1]] ) # 이미지 출력하는법



flips = c("horizontal", "vertical")


for(file in 1:length(files)){


object <- Images[[ files[file] ]] # 1번 이미지부터 5번 이미지까지, for loop로 접근

i = c(1,2) # flips를 결정하는 i

j = seq(ncol(object), ncol(object)-60, -30) # resiz_width 변수를 결정하는 j

k = seq(nrow(object), nrow(object)-60, -30) # resiz_height 변수를 결정하는 k

rotate_angle = c( seq(0, 20, 4), seq(359.5, 340, -4) ) # rotate로 회전시키는 변수 rotate_angle

for(i_idx in i) for(j_idx in j) for(k_idx in k) for(rotate_angle_idx in rotate_angle){ # 4개의 for loop로 Image augmentation

res <- Augmentation(object, flip_mode=flips[i_idx], resiz_width=j_idx, resiz_height=k_idx, rotate_angle = rotate_angle_idx)

filename = paste0(files[file],"_",i_idx,"_",j_idx,"_",k_idx,"_",rotate_angle_idx,".png")

writeImage(res, file_name=filename ) #Augmentation 된 이미지 저장하는 소스코드

}

}