Rで解析:画像のカラーコードを取得する方法!「EBImage」パッケージの紹介

Rの解析に役に立つ記事
スポンサーリンク

画像で使用されているカラーコードの取得には、画像編集ソフトを使用する方法があります。

「Rでお遊び:プレゼン資料の配色に使えるかも?キャラクターの髪の色?」でも、画像をフォトショップで読み込み、スポイトでカラーコードを取得しました。非常に手間がかかる作業です。

そこで、「Rで目的画像内の全ピクセルのカラーコードから、使用量が多いTOP5のカラーコードを取得する方法」を考えました。

紹介するコードでは、Rで画像の加工や情報を取得できる「EBImage」パッケージを使用しています。EBImageパッケージはbioLiteコマンドでbioconductorから簡単にインストールすることができます。

EBImageのバージョンは4.6.0です。

なお、bioconductorはRから利用出来るバイオインフォマティクス解析パッケージを提供しているサイトです。
参考URL:http://www.bioconductor.org/

スポンサーリンク

画像からカラーコードを取得する他のお勧めパッケージ

おすすめのパッケージです。

パッケージのインストール

下記コマンドを実行してください。

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

実行コマンドの紹介

画像ファイルをダイアログで選択できるようにtcltkパッケージを利用しています。
今回の画像は「やはり俺の青春ラブコメはまちがっている。続」から「雪ノ下雪乃」の肩から上の画像を利用しています。

参考URL:http://www.tbs.co.jp/anime/oregairu/

personal02

使用画像です。

なお、Mac mini(Late 2012)、メモリ16GBの環境で2000×1260ピクセルの処理は約1分ほどです。

library("EBImage")
#Imageファイルの読み込み
selectAImage <- paste(as.character(tkgetOpenFile(title = "Image&#12434;&#36984;&#25246;",filetypes = '{"Image&#12501;&#12449;&#12452;&#12523;" {".*"}}',initialfile = "*.*")), sep = "", collapse =" ")
Image <- readImage(selectAImage, mode = "x11")

#&#35501;&#12415;&#36796;&#12435;&#12384;Image&#12434;&#12502;&#12521;&#12454;&#12470;&#12391;&#34920;&#31034;
display(Image)

#Image&#12363;&#12425;&#12459;&#12521;&#12540;&#12467;&#12540;&#12489;&#12434;&#21462;&#24471;
#&#12500;&#12463;&#12475;&#12523;&#25968;&#12364;&#22810;&#12356;Image&#12411;&#12393;&#12513;&#12514;&#12522;&#12364;&#24517;&#35201;&#12391;&#12377;
ColCode <- channel(Image, mode = "x11")

#2000&times;1260&#12500;&#12463;&#12475;&#12523;&#12398;&#20966;&#29702;&#12391;&#31169;&#12398;&#29872;&#22659;&#12391;&#32004;1&#20998;&#12411;&#12393;&#12363;&#12363;&#12426;&#12414;&#12375;&#12383;&#12290;
CountColor <- sort(table(ColCode), decreasing = TRUE)

#&#29305;&#23450;&#12398;&#33394;&#12434;&#21066;&#38500;&#12290;&#20170;&#22238;&#12399;&#30333;&#33394;&#12434;&#21066;&#38500;
CountColor <- CountColor[names(CountColor) != "#FFFFFF"]

#&#26908;&#30693;&#25968;TOP5&#12434;&#34920;&#31034;
SelectCol <- 5
head(CountColor, SelectCol)

ColCode
#FAE7D8 #DBD5D4 #CFC8C8 #333335 #5C6062
3422     954     810     779     712 

pie(rep(1, SelectCol),
    labels = names(head(CountColor, SelectCol)),
    col = names(head(CountColor, SelectCol)))

出力

雪ノ下雪乃

画像処理コマンドの紹介

EBImageパッケージでは画像の明度、コントラスト、ガンマ値、カラーモードの変更、クリッピング、回転などが可能です。

#&#12362;&#12414;&#12369;
#&#26126;&#24230;&#12399;&#12300;+&#12301;&#12414;&#12383;&#12399;&#12300;-&#12301;&#12391;&#25351;&#23450;&#12375;&#12414;&#12377;
#&#26126;&#12427;&#12367;
Image1 <- Image + 0.4
display(Image1)
#&#26263;&#12367;
Image2 <- Image - 0.4
display(Image2)

#&#12467;&#12531;&#12488;&#12521;&#12473;&#12488;&#12399;&#12300;*&#12301;&#12391;&#25351;&#23450;&#12375;&#12414;&#12377;
#&#26126;&#12427;&#12367;
Image3 <- Image * 1.3
display(Image3)
#&#26263;&#12367;
Image4 <- Image * 0.7
display(Image4)

#&#12460;&#12531;&#12510;&#20516;&#12399;&#12300;^&#12301;&#12391;&#25351;&#23450;&#12375;&#12414;&#12377;
#&#39640;&#12356;
Image5 <- Image ^ 1.3
display(Image5)
#&#20302;&#12356;
Image6 <- Image ^ 0.7
display(Image6)

#&#12463;&#12522;&#12483;&#12500;&#12531;&#12464;&#12418;&#12391;&#12365;&#12414;&#12377;&#12290;&#31684;&#22258;&#12399;display&#12467;&#12510;&#12531;&#12489;&#12391;&#30011;&#20687;&#12434;&#34920;&#31034;&#12375;&#12390;&#24231;&#27161;&#12434;&#21462;&#24471;&#12377;&#12427;&#12392;&#20415;&#21033;&#12391;&#12377;
#&#25351;&#23450;&#12399;[x&#36600;&#12398;&#31684;&#22258;&#65288;&#24133;&#65289;, y&#36600;&#12398;&#31684;&#22258;&#65288;&#39640;&#12373;&#65289;,]&#12391;&#12377;
display(Image[39:159, 87:122,])

#&#22238;&#36578;&#12418;&#21487;&#33021;&#12391;&#12377;
#translate(rotate(Image, &#12300;+&#12301;&#12414;&#12383;&#12399;&#12300;-&#12301;&#12391;&#22238;&#36578;), &#22238;&#36578;&#12398;&#21407;&#28857;&#65289;&#12391;&#12377;
display(translate(rotate(Image, -45), c(0, 0)))

#&#12459;&#12521;&#12540;&#12481;&#12515;&#12531;&#12493;&#12523;&#12418;&#22793;&#26356;&#12391;&#12365;&#12414;&#12377;
colorMode(Image) <- Grayscale
display(Image)

#&#12459;&#12521;&#12540;&#12395;&#12418;&#31777;&#21336;&#12395;&#25147;&#12379;&#12414;&#12377;
colorMode(Image) <- Color

出力

名称未設定-1

少しでも、あなたのウェブや実験の解析が楽になりますように!!

タイトルとURLをコピーしました