2014-12-15 11 views
6

나는 kaggle 경쟁으로 분류하려고하는 JPG 이미지 폴더가 있습니다. 파이썬에서 포럼에서이를 수행 할 것이라고 생각하는 코드를 보았지만 R에서 할 수 있을지 궁금해하고 있었습니까? 나는 많은 jpg 이미지의이 폴더를 각 픽셀의 회색 음영을 나타내는 숫자가있는 CSV 파일로 변환하려고합니다. http://www.kaggle.com/c/digit-recognizer/을 사용하여 jpg를 그레이 스케일 CSV로 변환 R

기본적으로 R의 jpg -> .csv는 숫자를 표시합니다. 분류에 사용하는 각 픽셀의 그레이 스케일 나는 그것에 임의의 숲이나 선형 모델을 넣고 싶다.

+1

당신이 파일을 읽을 수있는'jpeg' 패키지와'readJPEG'을 사용할 수 있습니다 coord는 0 : 1이 될 것이고 그레이 스케일 레벨과 일치 할 것입니다. – hrbrmstr

+1

@hrbrmstr은 "대부분의"JPEG 파일이 8 비트이므로 f 원하는 경우 '0 : 255'로 '0 : 1'을 씁니다. –

답변

7

이 작업을 수행하는 방법에 대한 공식은 link입니다. raster 패키지가 하나의 방법입니다. 이것은 기본적으로 하나 개의 검은 색과 흰색 밴드에 RGB 대역 변환 (나는 당신이 원하는 것을 추측하고 그 크기에 작은 수를.)

library(raster) 
color.image <- brick("yourjpg.jpg") 

# Luminosity method for converting to greyscale 
# Find more here http://www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/ 
color.values <- getValues(color.image) 
bw.values <- color.values[,1]*0.21 + color.values[,1]*0.72 + color.values[,1]*0.07 

내가가합니다 ( EBImage 패키지는이 문제에 대한 도움이 될 수 있습니다 생각하지 않는다 CRAN, source를 통해 설치합니다. 그들이 진정으로 단일 채널 (그레이 스케일) 이미지는 X/Y에서 그 값이 있다면

source("http://bioconductor.org/biocLite.R") 
biocLite("EBImage") 
library(EBImage) 

color.image <- readImage("yourjpg.jpg") 
bw.image <- channel(color.image,"gray") 
writeImage(bw.image,file="bw.png") 
+0

지식 마이크를 공유해 주셔서 감사합니다 :) – barker