Rで解析:画像からカラーパレット、そしてカラーシステムを変換「schemr」パッケージ

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

画像からカラーパレットを取得するコマンドだけでなく、hex RGB、hsl、hsv、lab、rgbそしてxyzを他カラーシステムに変換するコマンドが収録されたパッケージの紹介です。

パッケージのバージョンは0.3.0。windows 11のR version 4.4.1で確認しています。

スポンサーリンク

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

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

# パッケージのインストール
install.packages("schemr")

実行コマンド

詳細はコメントやコマンドヘルプを確認してください。

# パッケージの読み込み
library("schemr")

### 画像ファイルの準備 #####
# 画像例を作業フォルダにダウンロード
download.file('https://www.karada-good.net/wp/wp-content/uploads/2022/08/TEST.jpg',
              'KARADA.jpg', mode = 'wb') 
# 画像例を指定
library("tcltk")
Path <- paste0(as.character(tkgetOpenFile(title = "画像ファイルを選択",
                                          filetypes = '{"画像ファイル" {".*"}}',
                                          initialfile = c("*.*"))))
########

# 画像からカラーパレットを作成:image_to_palletteコマンド
# 画像を指定:image_pathオプション
# 画像の拡大,縮小設定:resize_factorオプション;初期値:NULL;1で等倍,大きい処理は時間がかかります
# superpixel化の手法設定:methodオプション;"slic"/"slico"
# 使用するsuperpixelの数:superpixelオプション;初期値:200
# コンパクトネスパラメータの設定:compactnessオプション;初期値:20
# 処理内容をコンソールに表示:verboseオプション;TRUE/FALSE
# カラースペースの指定:colour_spaceオプション;"sRGB"/"Adobe"
Get_Col_Value <- image_to_pallette(image_path = Path,
                                   resize_factor = 1,
                                   method = "slic",
                                   superpixel = 200,
                                   compactness = 20,
                                   verbose = FALSE,
                                   colour_space = "sRGB")

# 確認
Get_Col_Value
[1] "#a75552" "#753937" "#bcb7a3" "#7f7f7d" "#68686c" "#303038" "#464774" "#b2a47b" "#4c4a45"

# カラーパレットをプロット:paletteコマンド
palette(Get_Col_Value)


### 以下のコマンドへのデータはデータフレームもしくはマトリックスで指定します ###
# RGBをhexに変換:rgb_to_hexコマンド
rgb_to_hex(rgb = data.frame(r = 240, g = 240, b = 240))
[1] "#f0f0f0"

# RGBをhslに変換:rgb_to_hslコマンド
rgb_to_hsl(rgb = data.frame(r = 240, g = 240, b = 240))
# hは0?
# A tibble: 1 × 3
#   h     s     l
#  <dbl> <dbl> <dbl>
#1    NA     0 0.941

# RGBをhsvに変換:rgb_to_hsvコマンド
rgb_to_hsv(rgb = data.frame(r = 240, g = 240, b = 240))
# hは0?
# A tibble: 1 × 3
#     h     s     v
#  <dbl> <dbl> <dbl>
#1    NA     0 0.941

# RGBをlabに変換:rgb_to_labコマンド
rgb_to_lab(rgb = data.frame(r = 240, g = 240, b = 240),
           transformation = "Adobe")
# A tibble: 1 × 3
#     l        a       b
#  <dbl>    <dbl>   <dbl>
# 1  95.0 -0.00555 -0.0128

# RGBをxyzに変換:rgb_to_xyzコマンド
rgb_to_xyz(rgb = data.frame(r = 240, g = 240, b = 240),
           transformation = "Adobe")
# A tibble: 1 × 3
#    x     y     z
#  <dbl> <dbl> <dbl>
#1  83.2  87.5  95.3

### 以下コマンドを紹介
## hexを変換
# hex_to_labコマンド
# hex_to_rgbコマンド 
# hex_to_xyzコマンド

## hslを変換
# hsl_to_hsvコマンド
# hsl_to_labコマンド
# hsl_to_rgbコマンド
# hsl_to_xyzコマンド

## hsvを変換
# hsv_to_hslコマンド
# hsv_to_labコマンド
# hsv_to_rgbコマンド
# hsv_to_xyzコマンド

## labを変換
# lab_to_hexコマンド
# lab_to_hslコマンド
# lab_to_hsvコマンド
# lab_to_rgbコマンド
# lab_to_xyzコマンド

## xyzを変換
# xyz_to_hexコマンド
# xyz_to_hslコマンド
# xyz_to_hsvコマンド
# xyz_to_labコマンド
# xyz_to_rgbコマンド

実行例

・カラーパレットをプロット:paletteコマンド


少しでも、あなたの解析が楽になりますように!!

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