Конвертировать 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")
Другие вопросы по тегам