Конвертировать jpg в csv в оттенках серого, используя R
У меня есть папка с изображениями в формате JPG, которые я пытаюсь классифицировать для соревнований по борьбе. Я видел некоторый код в Python, который, я думаю, достигнет этого на форумах, но мне было интересно, возможно ли это сделать в R? Я пытаюсь преобразовать эту папку из множества изображений jpg в файлы csv, в которых есть номера, показывающие оттенки серого каждого пикселя, аналогично распознавателю цифр руки здесь http://www.kaggle.com/c/digit-recognizer/
Таким образом, в основном jpg -> .csv в R, показывающий числа для градаций серого каждого пикселя, используемого для классификации. Я хотел бы добавить случайный лес или линейную модель.
1 ответ
Есть несколько формул, как это сделать по этой ссылке. 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
:
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")