2014-12-15 26 views
6

Kaggle rekabeti için sınıflandırmaya çalıştığım bir JPG resim klasörüne sahibim. Python'da forumlarda bunu başarabileceğimi düşündüğüm bazı kodlar gördüm, ama merak ediyorum ki R? > .csv R gösteren numaralar için - Burada taraftaki rakam tanıyıcı Yani temelde http://www.kaggle.com/c/digit-recognizer/jpg'yi greyscale csv ile çevirme R

jpg için, benzer her pikselin gri tonlu gösteren numaraları var csv dosyaları içine birçok jpg görüntüleri bu klasörü dönüştürmek çalışıyorum sınıflandırma için kullanılacak her pikselin gri tonlaması. Rastgele bir orman veya lineer model koymak istiyorum.

+1

dosyaları okumak için 'jpeg' paketi ve' readJPEG' kullanabilirsiniz koordinat 0: 1 olacak ve gri tonlama seviyesine karşılık gelecektir: – hrbrmstr

+1

@hrbrmstr, "çoğu" JPEG dosyasının 8 bit olduğunu ve böylece istenirse 0: 1 ile 0: 255 arasında değişir. –

cevap

7

Bu link'da bunun nasıl yapılacağı hakkında bazı formüller vardır. raster paketi bir yaklaşımdır. THis temelde bir siyah ve beyaz banda RGB bantları dönüştürür (Ne istediğini tahmin ediyorum o boyutu daha küçük hale getirir.)

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 

Ben ( EBImage paket de bu sorun için yardımcı olabilir değil düşünüyorum CRAN, source yoluyla kurun. onlar gerçekten tek kanal (gri tonlama) görüntüler, x/y daha sonra değeri ise

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

Bilgiyi paylaştığınız için teşekkürler Mike :) – barker