(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023179311
(43)【公開日】2023-12-19
(54)【発明の名称】染毛シミュレーションを実行するためのコンピュータプログラムとシミュレーション装置
(51)【国際特許分類】
A45D 44/00 20060101AFI20231212BHJP
G06T 1/00 20060101ALI20231212BHJP
G06T 7/00 20170101ALI20231212BHJP
【FI】
A45D44/00 A
G06T1/00 340Z
G06T7/00 660Z
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022092566
(22)【出願日】2022-06-07
(71)【出願人】
【識別番号】000113274
【氏名又は名称】ホーユー株式会社
(71)【出願人】
【識別番号】320005501
【氏名又は名称】株式会社電通
(74)【代理人】
【識別番号】110000110
【氏名又は名称】弁理士法人 快友国際特許事務所
(72)【発明者】
【氏名】川原 翔
(72)【発明者】
【氏名】今野 佳洋
(72)【発明者】
【氏名】住吉 美弥
(72)【発明者】
【氏名】伊藤 圭実
(72)【発明者】
【氏名】児玉 拓也
(72)【発明者】
【氏名】鈴木 初美
(72)【発明者】
【氏名】トゥメンバヤル オドエルデネ
(72)【発明者】
【氏名】小林 駿太郎
【テーマコード(参考)】
5B057
5L096
【Fターム(参考)】
5B057BA02
5B057CA01
5B057CA08
5B057CA12
5B057CA16
5B057CB01
5B057CB07
5B057CB12
5B057CB16
5B057CD05
5B057CE17
5B057CE18
5B057DA12
5B057DB02
5B057DB06
5B057DB09
5B057DC40
5L096AA02
5L096AA06
5L096CA02
5L096EA03
5L096HA11
5L096KA04
(57)【要約】
【課題】従来とは異なる手法を利用して、ヒトの毛髪に対する染毛シミュレーションを実行する技術を提供すること。
【解決手段】シミュレーション装置は、ヒトを撮影することによって得られる対象画像に含まれる毛髪領域を複数の髪色に対応する複数の髪色領域に分類する分類部と、前記複数の髪色領域のそれぞれに対して特定の染毛剤による染毛に対応する第1の着色処理を実行して、前記複数の髪色領域に対応する複数の第1の処理済領域を含む第1の着色済画像を生成する第1の生成部であって、前記複数の髪色領域のそれぞれに対する前記第1の着色処理の着色量は互いに異なる、前記第1の生成部と、前記第1の着色済画像を表示部に表示させる第1の表示制御部と、を備える。
【選択図】
図7
【特許請求の範囲】
【請求項1】
ヒトの毛髪に対する染毛シミュレーションを実行するためのコンピュータプログラムであって、
コンピュータを、以下の各部、即ち、
前記ヒトを撮影することによって得られる対象画像に含まれる毛髪領域を複数の髪色に対応する複数の髪色領域に分類する分類部と、
前記複数の髪色領域のそれぞれに対して特定の染毛剤による染毛に対応する第1の着色処理を実行して、前記複数の髪色領域に対応する複数の第1の処理済領域を含む第1の着色済画像を生成する第1の生成部であって、前記複数の髪色領域のそれぞれに対する前記第1の着色処理の着色量は互いに異なる、前記第1の生成部と、
前記第1の着色済画像を表示部に表示させる第1の表示制御部、
として機能させる、コンピュータプログラム。
【請求項2】
前記複数の髪色領域は、第1の画素値範囲によって特定される第1の髪色に対応する第1の髪色領域と、前記第1の画素値範囲とは異なる第2の画素値範囲によって特定される第2の髪色に対応する第2の髪色領域と、を含み、
前記第1の髪色領域に対する前記第1の着色処理は、前記第1の髪色領域を構成する各画素の画素値を第1の固定値だけ変化させることを含み、
前記第2の髪色領域に対する前記第1の着色処理は、前記第2の髪色領域を構成する各画素の画素値を前記第1の固定値とは異なる第2の固定値だけ変化させることを含む、請求項1に記載のコンピュータプログラム。
【請求項3】
前記コンピュータプログラムは、前記コンピュータを、さらに、
前記第1の着色済画像に含まれる前記複数の第1の処理済領域のそれぞれに対して前記特定の染毛剤による2回目の染毛に対応する第2の着色処理を実行して、前記複数の第1の処理済領域に対応する複数の第2の処理済領域を含む第2の着色済画像を生成する第2の生成部であって、前記複数の第1の処理済領域のそれぞれに対する前記第2の着色処理の着色量は互いに異なる、前記第2の生成部と、
前記第2の着色済画像を表示部に表示させる第2の表示制御部と、
として機能させる、請求項1に記載のコンピュータプログラム。
【請求項4】
前記複数の髪色領域のうちの特定の髪色領域に対する前記第1の着色処理の着色量と、前記複数の第1の処理済領域のうちの前記特定の髪色領域に対応する特定の第1の処理済領域に対する前記第2の着色処理の着色量と、は異なる、請求項3に記載のコンピュータプログラム。
【請求項5】
前記コンピュータプログラムは、前記コンピュータを、さらに、
前記第2の着色済画像に含まれる前記複数の第2の処理済領域のそれぞれに対して前記特定の染毛剤による3回目の染毛に対応する第3の着色処理を実行して、前記複数の第2の処理済領域に対応する複数の第3の処理済領域を含む第3の着色済画像を生成する第3の生成部であって、前記複数の第2の処理済領域のそれぞれに対する前記第3の着色処理の着色量は互いに異なり、前記特定の髪色領域に対する前記第1の着色処理の着色量と、前記特定の第1の処理済領域に対する前記第2の着色処理の着色量と、前記複数の第2の処理済領域のうちの前記特定の第1の処理済領域に対応する特定の第2の処理済領域に対する前記第3の着色処理の着色量と、は異なる、前記第3の生成部と、
前記第3の着色済画像を表示部に表示させる第3の表示制御部と、
として機能させる、請求項4に記載のコンピュータプログラム。
【請求項6】
前記特定の染毛剤は、白髪染め剤であり、
前記第1の着色処理は、白髪染め処理である、請求項1に記載のコンピュータプログラム。
【請求項7】
前記分類部は、複数の学習データを利用したディープラーニングであって、前記毛髪領域に含まれるツヤ領域を白髪に対応する髪色領域と判定しないための前記ディープラーニングに従って、前記毛髪領域を前記複数の髪色領域に分類する、請求項6に記載のコンピュータプログラム。
【請求項8】
ヒトの毛髪に対する染毛シミュレーションを実行するためのコンピュータプログラムであって、
コンピュータを、以下の各部、即ち、
前記ヒトを撮影することによって得られる対象画像に含まれる毛髪領域を複数の髪色に対応する複数の髪色領域に分類する分類部と、
前記対象画像を利用して、特定の染毛剤によるN回(前記Nは2以上の整数)の染毛に対応するN回の着色処理を実行して、N個の着色済画像を生成する生成部と、
前記N個の着色済画像のうちの少なくとも1個の着色済画像を表示部に表示させる表示制御部、
として機能させ、
前記生成部は、前記対象画像に対して1回目の着色処理を実行すると共に、(N-1)回目の着色処理によって生成される(N-1)個目の着色済画像に対してN回目の着色処理を実行し、
前記N回の着色処理のいずれにおいても、前記複数の髪色領域に対応する複数の処理対象領域のそれぞれに対する着色量は互いに異なる、コンピュータプログラム。
【請求項9】
(N-1)回目の着色処理とN回目の着色処理とでは、前記複数の髪色領域のうちの特定の髪色領域に対応する処理対象領域に対する着色量は異なる、請求項8に記載のコンピュータプログラム。
【請求項10】
ヒトの毛髪に対する染毛シミュレーションを実行するシミュレーション装置であって、
前記ヒトを撮影することによって得られる対象画像に含まれる毛髪領域を複数の髪色に対応する複数の髪色領域に分類する分類部と、
前記複数の髪色領域のそれぞれに対して特定の染毛剤による染毛に対応する第1の着色処理を実行して、前記複数の髪色領域に対応する複数の第1の処理済領域を含む第1の着色済画像を生成する第1の生成部であって、前記複数の髪色領域のそれぞれに対する前記第1の着色処理の着色量は互いに異なる、前記第1の生成部と、
前記第1の着色済画像を表示部に表示させる第1の表示制御部と、
を備える、シミュレーション装置。
【請求項11】
ヒトの毛髪に対する染毛シミュレーションを実行するシミュレーション装置であって、
前記ヒトを撮影することによって得られる対象画像に含まれる毛髪領域を複数の髪色に対応する複数の髪色領域に分類する分類部と、
前記対象画像を利用して、特定の染毛剤によるN回(前記Nは2以上の整数)の染毛に対応するN回の着色処理を実行して、N個の着色済画像を生成する生成部と、
前記N個の着色済画像のうちの少なくとも1個の着色済画像を表示部に表示させる表示制御部と、
を備え、
前記生成部は、前記対象画像に対して1回目の着色処理を実行すると共に、(N-1)回目の着色処理によって生成される(N-1)個目の着色済画像に対してN回目の着色処理を実行し、
前記N回の着色処理のいずれにおいても、前記複数の髪色領域に対応する複数の処理対象領域のそれぞれに対する着色量は互いに異なる、シミュレーション装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、ヒトの毛髪に対する染毛シミュレーションを実行する技術に関する。
【背景技術】
【0002】
非特許文献1には、ヒトの毛髪に対する染毛シミュレーションを実行するウェブサーバが開示されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】“髪色シミュレーション”、[online]、ブローネ、花王株式会社、[令和4年5月16日検索]、インターネット<URL:https://virtual-cosme.net/jp/blaune/>
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
本明細書では、従来とは異なる手法を利用して、ヒトの毛髪に対する染毛シミュレーションを実行する技術を提供する。
【課題を解決するための手段】
【0006】
本明細書によって開示される第1の態様は、ヒトの毛髪に対する染毛シミュレーションを実行するためのコンピュータプログラムである。当該コンピュータプログラムは、コンピュータを、以下の各部、即ち、前記ヒトを撮影することによって得られる対象画像に含まれる毛髪領域を複数の髪色に対応する複数の髪色領域に分類する分類部と、前記複数の髪色領域のそれぞれに対して特定の染毛剤による染毛に対応する第1の着色処理を実行して、前記複数の髪色領域に対応する複数の第1の処理済領域を含む第1の着色済画像を生成する第1の生成部であって、前記複数の髪色領域のそれぞれに対する前記第1の着色処理の着色量は互いに異なる、前記第1の生成部と、前記第1の着色済画像を表示部に表示させる第1の表示制御部と、として機能させてもよい。この構成によると、コンピュータは、分類済みの各髪色領域に応じた異なる着色量を利用するので、ヒトの実際の髪色に応じた染毛シミュレーションを適切に実行することができる。
【0007】
本明細書によって開示される第2の態様では、上記の第1の態様において、前記複数の髪色領域は、第1の画素値範囲によって特定される第1の髪色に対応する第1の髪色領域と、前記第1の画素値範囲とは異なる第2の画素値範囲によって特定される第2の髪色に対応する第2の髪色領域と、を含み、前記第1の髪色領域に対する前記第1の着色処理は、前記第1の髪色領域を構成する各画素の画素値を第1の固定値だけ変化させることを含み、前記第2の髪色領域に対する前記第1の着色処理は、前記第2の髪色領域を構成する各画素の画素値を前記第1の固定値とは異なる第2の固定値だけ変化させることを含んでもよい。この構成によると、コンピュータは、分類済みの各髪色領域に応じた異なる着色量を利用することができる。
【0008】
本明細書によって開示される第3の態様では、上記の第1又は第2の態様において、前記コンピュータプログラムは、前記コンピュータを、さらに、前記第1の着色済画像に含まれる前記複数の第1の処理済領域のそれぞれに対して前記特定の染毛剤による2回目の染毛に対応する第2の着色処理を実行して、前記複数の第1の処理済領域に対応する複数の第2の処理済領域を含む第2の着色済画像を生成する第2の生成部であって、前記複数の第1の処理済領域のそれぞれに対する前記第2の着色処理の着色量は互いに異なる、前記第2の生成部と、前記第2の着色済画像を表示部に表示させる第2の表示制御部と、として機能させてもよい。この構成によると、コンピュータは、1回目の染毛シミュレーション結果(即ち第1の着色済画像)に含まれる各第1の処理済領域に応じた異なる着色量を利用するので、2回目の染毛シミュレーションを適切に実行することができる。
【0009】
本明細書によって開示される第4の態様では、上記の第3の態様において、前記複数の髪色領域のうちの特定の髪色領域に対する前記第1の染毛処理の着色量と、前記複数の第1の処理済領域のうちの前記特定の髪色領域に対応する特定の第1の処理済領域に対する前記第2の着色処理の着色量と、は異なってもよい。この構成によると、コンピュータは、1回目の染毛シミュレーション結果の髪色に応じた着色量を利用して、2回目の染毛シミュレーションを実行することができる。
【0010】
本明細書によって開示される第5の態様では、上記の第4の態様において、前記コンピュータプログラムは、前記コンピュータを、さらに、前記第2の着色済画像に含まれる前記複数の第2の処理済領域のそれぞれに対して前記特定の染毛剤による3回目の染毛に対応する第3の着色処理を実行して、前記複数の第2の処理済領域に対応する複数の第3の処理済領域を含む第3の着色済画像を生成する第3の生成部であって、前記複数の第2の処理済領域のそれぞれに対する前記第3の着色処理の着色量は互いに異なり、前記特定の髪色領域に対する前記第1の着色処理の着色量と、前記特定の第1の処理済領域に対する前記第2の着色処理の着色量と、前記複数の第2の処理済領域のうちの前記特定の第1の処理済領域に対応する特定の第2の処理済領域に対する前記第3の着色処理の着色量と、は異なる、前記第3の生成部と、前記第3の着色済画像を表示部に表示させる第3の表示制御部と、として機能させてもよい。この構成によると、コンピュータは、2回目の染毛シミュレーション結果(即ち第2の着色済画像)に含まれる各第2の処理済領域に応じた異なる着色量を利用するので、3回目の染毛シミュレーションを適切に実行することができる。特に、コンピュータは、2回目の染毛シミュレーション結果の髪色に応じた着色量を利用して、3回目の染毛シミュレーションを実行することができる。
【0011】
本明細書によって開示される第6の態様では、上記の第1~第5の態様のいずれか1つの態様において、前記特定の染毛剤は、白髪染め剤であり、前記第1の着色処理は、白髪染め処理であってもよい。この構成によると、コンピュータは、ヒトの実際の髪色に応じた白髪染めシミュレーションを適切に実行することができる。
【0012】
本明細書によって開示される第7の態様では、上記の第6の態様において、前記分類部は、複数の学習データを利用したディープラーニングであって、前記毛髪領域に含まれるツヤ領域を白髪に対応する髪色領域と判定しないための前記ディープラーニングに従って、前記毛髪領域を前記複数の髪色領域に分類してもよい。この構成によると、コンピュータは、ツヤ領域を白髪に対応する髪色領域と判定しないので、ヒトの実際の髪色に応じた白髪染めシミュレーションを適切に実行することができる。
【0013】
本明細書によって開示される第8の態様は、ヒトの毛髪に対する染毛シミュレーションを実行するためのコンピュータプログラムである。当該コンピュータプログラムは、コンピュータを、以下の各部、即ち、前記ヒトを撮影することによって得られる対象画像に含まれる毛髪領域を複数の髪色に対応する複数の髪色領域に分類する分類部と、前記対象画像を利用して、特定の染毛剤によるN回(前記Nは2以上の整数)の染毛に対応するN回の着色処理を実行して、N個の着色済画像を生成する生成部と、前記N個の着色済画像のうちの少なくとも1個の着色済画像を表示部に表示させる表示制御部と、として機能させてもよい。前記生成部は、前記対象画像に対して1回目の着色処理を実行すると共に、(N-1)回目の着色処理によって生成される(N-1)個目の着色済画像に対してN回目の着色処理を実行し、前記N回の着色処理のいずれにおいても、前記複数の髪色領域に対応する複数の処理対象領域のそれぞれに対する着色量は互いに異なってもよい。この構成によると、コンピュータは、N回の着色処理のいずれにおいても、分類済みの各髪色領域に応じた異なる着色量を利用するので、ヒトの実際の髪色に応じた染毛シミュレーションを適切に実行することができる。
【0014】
本明細書によって開示される第9の態様では、上記の第8の態様において、(N-1)回目の着色処理とN回目の着色処理とでは、前記複数の髪色領域のうちの特定の髪色領域に対応する処理対象領域に対する着色量は異なってもよい。この構成によると、コンピュータは、(N-1)回目の染毛シミュレーション結果の髪色に応じた着色量を利用して、N回目の染毛シミュレーションを実行することができる。
【0015】
上記のコンピュータプログラムを記憶するコンピュータ可読記憶媒体も新規で有用である。上記のコンピュータプログラムによって実現されるシミュレーション装置、当該シミュレーション装置によって実行される方法、及び、当該シミュレーション装置と他の装置とを備える通信システムも新規で有用である。
【図面の簡単な説明】
【0016】
【
図2】シミュレーションサーバによって実行されるシミュレーション処理のフローチャートを示す。
【
図3】撮影用画面と撮影画像とリサイズ画像の一例を示す。
【
図4】毛髪領域を確定する処理を説明するための図を示す。
【
図5】ツヤ領域を特定する処理を説明するための図を示す。
【
図6】毛髪領域を複数の髪色領域に分類する処理を説明するための図を示す。
【
図7】3回の着色処理によって生成される3個の着色済画像の一例を示す。
【発明を実施するための形態】
【0017】
(通信システム2の構成:
図1)
図1に示されるように、通信システム2は、シミュレーションサーバ10(以下では単に「サーバ10」と記載する)と携帯端末100とを備える。サーバ10及び携帯端末100は、インターネット6に接続されており、インターネット6を介して相互に通信可能である。
【0018】
(サーバ10の構成)
本実施例では、サーバ10は、白髪染め剤を製造及び販売するメーカによってインターネット上6に設置され、携帯端末100によって撮影されたヒトの画像に含まれる毛髪領域に対する白髪染めシミュレーションを実行する。サーバ10は、通信インターフェース12と制御部30とを備える。各部12,30は、バス線(符号省略)に接続されている。通信インターフェース12は、インターネット6に接続されている。
【0019】
制御部30は、CPU32とメモリ34とを備える。CPU32は、メモリ34に格納されているプログラム36,38に従って、様々な処理を実行する。メモリ34は、揮発性メモリ、不揮発性メモリ等によって構成される。OSプログラム36は、サーバ10の基本的な動作を実現するためのプログラムである。各アプリケーションプログラム38は、白髪染めシミュレーションに関する各種処理を実行するためのプログラムである。各アプリケーションプログラム38は、既存のLibrary又は既存のModelによって実現されたプログラムと、上記のメーカによって独自に開発されたプログラムと、を含む。
【0020】
メモリ34は、プログラム36,38に加えて、学習データ40と2種類の変換テーブル42,44とを記憶する。学習データ40は、毛髪領域及びツヤ領域を特定するためのディープラーニングに利用されるデータである。RGB→Lab変換テーブル42は、RGB色空間の画素値をLab色空間の画素値に変換するためのテーブルである。Lab→RGB変換テーブル44は、Lab色空間の画素値をRGB色空間の画素値に変換するためのテーブルである。
【0021】
(携帯端末100の構成)
携帯端末100は、タブレットPC、スマートフォン等の可搬型のユーザ端末である。変形例では、携帯端末100に代えて、デスクトップPC等の据置型のユーザ端末が利用されてもよい。携帯端末100は、通信インターフェース112と操作部114と表示部116とカメラ118と制御部130とを備える。各部112~130は、バス線(符号省略)に接続されている。
【0022】
通信インターフェース112は、インターネット6に接続されている。操作部114は、ユーザによって操作されることに応じて、ユーザからの指示を受け付けるボタンを備える。表示部116は、様々な情報を表示するためのディスプレイである。表示部116は、いわゆるタッチパネルとして機能する。即ち、表示部116は、ユーザによって操作される操作部としても機能する。カメラ118は、静止画又は動画を撮影するためのデバイスであり、本実施例では、ヒトの静止画を撮影するために利用される。
【0023】
制御部130は、CPU132とメモリ134とを備える。CPU132は、メモリ134に格納されているプログラム136,138に従って、様々な処理を実行する。メモリ134は、揮発性メモリ、不揮発性メモリ等によって構成される。OSプログラム136は、携帯端末100の基本的な動作を実現するためのプログラムである。ブラウザプログラム138は、ウェブサーバ(例えばサーバ100)にアクセスして様々な画像を表示部116に表示させるためのプログラムである。
【0024】
(シミュレーション処理:
図2)
図2を参照して、サーバ10のCPU32がプログラム36,38に従って実行するシミュレーション処理の内容を説明する。なお、以下では、携帯端末100の動作を詳しく説明しないが、携帯端末100は、ブラウザプログラム138に従ってサーバ10にアクセスして画像を表示部116に表示させる。
【0025】
S10において、サーバ10のCPU32は、携帯端末100からのアクセスを受け付けることを監視する。携帯端末100のブラウザプログラム138が起動されている状態において、サーバ10のURL(UniformResource Locatorの略)が携帯端末100に入力される場合に、CPU32は、携帯端末100からアクセス要求を受信する。この場合、CPU32は、S10でYESと判断してS12に進む。
【0026】
S12において、CPU32は、撮影用画面200を表わす撮影用画面データを携帯端末100に送信する。この結果、
図3に示されるように、撮影用画面200が携帯端末100の表示部116に表示される。撮影用画面200は、撮影を促すメッセージ202と、カメラ118によって現在撮影されている画像を表示するための表示領域204と、を含む。表示領域204は、顔の位置の基準を示す円領域206と、撮影ボタン208と、を含む。ユーザによって撮影ボタン208が選択されると、撮影画像210がメモリ134に記憶される。撮影画像210は、RGB色空間の画素値によって表現される複数個の画素を含む。RGB色空間の画素値は、本実施例では0~255の範囲内の値であるが、変形例では上限が255以外である範囲内の値であってもよい。
【0027】
S14において、CPU32は、携帯端末100から、撮影画像210を表わす撮影画像データを受信する。これにより、CPU32は、撮影画像210を読み込んで、様々な処理を実行することができる。CPU32は、例えば、Pillow Imaging Libraryによって実現されるアプリケーションプログラム38を利用して、撮影画像210を読み込む。当該Libraryの詳細は、例えば、URL「https://ja.wikipedia.org/wiki/Python_Imaging_Library」に開示されている。
【0028】
S16において、CPU32は、撮影画像210に対するリサイズ処理を実行する。CPU32は、例えば、OpenCVと呼ばれるLibraryによって実現されるアプリケーションプログラム38を利用して、リサイズ処理を実行する。当該Libraryの詳細は、例えば、URL「https://ja.wikipedia.org/wiki/OpenCV」に開示されている。具体的には、CPU32は、撮影画像210の高さ方向及び幅方向の少なくとも一方の画素数が1200より大きい場合には、高さ方向及び幅方向のどちらの画素数も1200になるように、撮影画像210を縮小してリサイズ画像220を生成する。一方、CPU32は、撮影画像210の高さ方向及び幅方向のいずれの画素数も1200以下である場合には、撮影画像210をリサイズしない。ただし、以下では、便宜上、このようにリサイズされなかった画像のことも「リサイズ画像220」と記載する。なお、リサイズのための画素数の閾値は、1200に限られず、1200より大きくてもよいし小さくてもよい。
【0029】
S20において、CPU32は、リサイズ画像220に含まれる背景領域、顔領域、及び、毛髪領域のそれぞれを特定する。各領域を特定するためのアプリケーションプログラム38は異なる。具体的には、背景領域を特定するためのアプリケーションプログラム38は、MODNet Modelによって実現される。当該Modelの詳細は、例えば、URL「https://github.com/ZHKKKe/MODNet」に開示されている。また、当該Modelの詳細を示す論文をURL「URL:https://arxiv.org/abs/2011.11961v4」からダウンロードすることができる。当該論文の執筆者、大学名、題名は、それぞれ、Zhanghan Ke他4名、Cornell University、“MODNet:Real-Time Trimap-Free Portrait Matting via Objective Decomposition”である。顔領域を特定するためのアプリケーションプログラム38は、Face Toolboxと呼ばれるLibraryによって実現される。当該Libraryの詳細は、例えば、URL「https://github.com/shaoanlu/face_toolbox_keras」に開示されている。毛髪領域を特定するためのアプリケーションプログラム38は、PyTorch-hair-segmentationと呼ばれるLibraryによって実現される。当該Libraryの詳細は、例えば、URL「https://github.com/YBIGTA/pytorch-hair-segmentation」に開示されている。
【0030】
図4に示されるように、MODNet Modelによって実現されるアプリケーションプログラム38は、膨大な数のヒトの画像を表わす学習データ40のうち、背景領域を示すアノテーションを含む学習データ40Aを利用したディープラーニングを実行する。
図4では、学習データ40Aにおける背景領域を示すアノテーションがハッチングで表現されている。CPU32は、当該アプリケーションプログラム38によって実現されるディープラーニングに従って、リサイズ画像220に含まれる背景領域220Aを特定する。
【0031】
Face Toolboxによって実現されるアプリケーションプログラム38は、学習データ40のうち、顔領域を示すアノテーションを含む学習データ40Bを利用したディープラーニングを実行する。
図4では、学習データ40Bにおける顔領域を示すアノテーションがハッチングで表現されている。CPU32は、当該アプリケーションプログラム38によって実現されるディープラーニングに従って、リサイズ画像220に含まれる顔領域220Bを特定する。
【0032】
PyTorch-hair-segmentationによって実現されるアプリケーションプログラム38は、学習データ40のうち、毛髪領域を示すアノテーションを含む学習データ40Cを利用したディープラーニングを実行する。
図4では、学習データ40Cにおける毛髪領域を示すアノテーションがハッチングで表現されている。CPU32は、当該アプリケーションプログラム38によって実現されるディープラーニングに従って、リサイズ画像220に含まれる毛髪領域220Cを特定する。
【0033】
S22において、CPU32は、S20で特定された各領域を利用して、リサイズ画像220に含まれる毛髪領域を確定する。本発明者らの研究の結果、S20で毛髪領域を特定する処理では、実際には背景又は顔である領域が毛髪として誤って認識される可能性があることがわかった。このため、S22において、CPU32は、S20で特定された毛髪領域220CとS20で特定された背景領域220Aとの間に重複部分(即ち画素)が存在する場合には、毛髪領域220Cから当該重複部分を除外すると共に、S20で特定された毛髪領域220CとS20で特定された顔領域220Bとの間に重複部分(即ち画素)が存在する場合には、毛髪領域220Cから重複部分を除外する。これにより、CPU32は、リサイズ画像220に含まれる毛髪領域222を確定することができる。なお、CPU32は、例えば、pymattingと呼ばれるLibraryによって実現されるアプリケーションプログラム38を利用して、S22の処理を実行してもよい。当該Libraryの詳細は、例えば、URL「https://github.com/pymatting/pymatting」に開示されている。このように、本実施例のサーバ10は、異なるアプリケーションプログラムを利用して、背景領域220A、顔領域220B、及び、毛髪領域220Cを特定し、背景領域220A及び顔領域220Bに含まれる部分を毛髪領域220Cから除外するので、毛髪領域222を適切に確定(即ち抽出)することができる。
【0034】
S24において、CPU32は、S22で確定された毛髪領域222を含むリサイズ画像220に対して色空間変換処理を実行する。具体的には、CPU32は、リサイズ画像220に含まれる複数個の画素のそれぞれについて、RGB→Lab変換テーブル42を利用して、RGB色空間の画素値をLab色空間の画素値に変換する。これにより、CPU32は、Lab色空間の画素値によって表現される複数個の画素を含むLab画像230(
図5参照)を生成することができる。Lab画像230は、リサイズ画像220内の毛髪領域222に対応する毛髪領域232を含む。Lab色空間の画素値のうちのL値は明度を示し、L値が小さい程、色が黒に近くなり、L値が大きい程、色が白に近くなる。Lab色空間の画素値は、本実施例では0~255の範囲内の値であるが、変形例では上限が255以外である範囲内の値であってもよい。また、変形例では、RGB→Lab変換テーブル42が利用されずに、上記のOpenCVと呼ばれるLibraryによって実現されるアプリケーションプログラム38が利用されて、S24の色空間変換処理が実行されてもよい。この点は、後述のS36の色空間変換処理でも同様である。
【0035】
S30において、CPU32は、Lab画像230に含まれるツヤ領域を特定する。ツヤ領域は、光が毛髪に当たることに応じて白色に見えるツヤに対応する領域である。ツヤ領域を特定するためのアプリケーションプログラム38は、本実施例では、サーバ10を設置したメーカによって開発されたものであるが、変形例では、既存のModel又はLibraryによって実現されるものでもよい。
図5に示されるように、ツヤ領域を特定するためのアプリケーションプログラム38は、学習データ40のうち、ツヤ領域を示すアノテーションを含む学習データ40Dを利用したディープラーニングを実行する。
図5では、学習データ40Dにおけるツヤ領域を示すアノテーションがハッチングで表現されている。CPU32は、当該アプリケーションプログラム38によって実現されるディープラーニングに従って、Lab画像230に含まれるツヤ領域234を特定する。
【0036】
S32において、CPU32は、Lab画像230に含まれる毛髪領域232を複数の髪色に対応する複数の髪色領域に分類する。本実施例では、複数の髪色は、黒色、白色、明るい茶色、及び、暗い茶色の4色である。CPU32は、毛髪領域232に含まれる各画素を、a値及びb値に関わらず、L値のみによって、複数の髪色領域に分類する。具体的には、CPU32は、0~41の範囲内のL値を有する各画素を黒色領域として決定し、42~90の範囲内のL値を有する各画素を暗い茶色領域として決定し、91~139の範囲内のL値を有する各画素を明るい茶色領域として決定し、140~255の範囲内のL値を有する各画素を白色領域(即ち白髪を示す領域)として決定する。これにより、CPU32は、毛髪領域232を4つの髪色領域に分類することができる。ただし、CPU32は、S30で特定されたツヤ領域234を構成する各画素を白色領域として決定しない。即ち、ツヤ領域234は、複数の髪色領域のいずれにも分類されない。
【0037】
図6の例では、ヒトが黒髪及び白髪のみを有しているので、CPU32は、毛髪領域232を黒色領域236及び白色領域238に分類する。そして、CPU32は、ツヤ領域234をどちらの領域236,238にも分類しない。なお、複数の髪色領域に分類するためのL値の数値範囲は上記に限られず、他の範囲が採用されてもよい。また、CPU32は、a値及びb値の数値範囲も考慮して、複数の髪色領域に分類してもよい。
【0038】
S34において、CPU32は、S32で特定された各髪色領域236,238に対して特定の白髪染め剤に対応する着色処理を実行して、着色済画像を生成する。具体的には、CPU32は、Lab画像230を利用して3回の着色処理を実行して、3個の着色済画像を生成する。CPU32は、Lab画像230に対して1回目の着色処理を実行して、第1の着色済画像240(
図7参照)を生成する。次いで、CPU32は、第1の着色済画像240に対して2回目の着色処理を実行して、第2の着色済画像250を生成する。最後に、CPU32は、第2の着色済画像250に対して2回目の着色処理を実行して、第3の着色済画像を生成する。このように、CPU32は、同じヒトが複数回に亘って白髪染め剤を利用することに対応する複数回のシミュレーション結果(即ち着色済画像240,250,260)を生成する。
【0039】
1回目の着色処理において、CPU32は、Lab画像230に含まれる各髪色領域236,238を構成する各画素の画素値を、
図7の「1回目」の下方に示される固定値だけ変化させる。なお、当該固定値は、上記の特定の白髪染め剤による白髪染めの効果に対応する値である。以下の2回目及び3回目で利用される固定値も同様である。例えば、CPU32は、Lab画像230に含まれる黒色領域236を構成する各画素について、a値及びb値を変更せず、L値を4減らす。また、CPU32は、Lab画像230に含まれる白色領域238を構成する各画素について、L値を14減らし、a値を2増やし、b値を1減らす。これにより、CPU32は、黒色領域236に対応する第1の処理済領域246と、白色領域238に対応する第1の処理済領域248と、を含む第1の着色済画像240を生成する。なお、例えば、Lab画像230が暗い茶色(又は明るい茶色)に対応する領域を含む場合には、CPU32は、当該領域を構成する各画素について、L値を9(又は11)減らし、a値を1増やし、b値を1減らす。このように、CPU32は、分類済みの各髪色領域に応じた異なる着色量を利用するので、ヒトの実際の髪色に応じた1回目の白髪染めシミュレーションを適切に実行することができる。
【0040】
なお、本実施例のように毛髪領域を各髪色領域に分類せずに、毛髪領域を構成する画素の画素値毎に異なる着色量を利用する比較例が考えられる。この比較例では、毛髪領域を構成する画素の画素値毎に着色量を計算する必要があるので、着色処理に長時間を要し得る。これに対し、本実施例では、CPU32は、髪色領域の分類を実行し、髪色領域に応じた固定値を利用して着色処理を実行するので、毛髪領域を構成する画素の画素値毎に着色量を計算せずに済む。従って、比較例と比べると、着色処理を迅速に実行し得る。
【0041】
特に、1回目の着色処理において、CPU32は、ツヤ領域234を構成する各画素の画素値を変化させない。従って、第1の着色済画像240は、Lab画像230内のツヤ領域234と同じ色を有するツヤ領域234を含む。同様に、後述の2回目及び3回目の着色処理でも、ツヤ領域234に対する着色処理は実行されない。このように、CPU32は、ツヤ領域234を白色と判定せず、白色領域238に対応する着色処理をツヤ領域234に対して実行しないので、ヒトの実際の髪色に応じた白髪染めシミュレーションを適切に実行することができる。変形例では、CPU32は、ツヤ領域234を、黒色、暗い茶色、及び、明るい茶色のいずれかに分類し、分類に応じた着色処理をツヤ領域234に対して実行してもよい。一般的に言うと、CPU32は、ツヤ領域234を白色と判定しなければよい。
【0042】
2回目の着色処理において、CPU32は、第1の着色済画像240に含まれる各第1の処理済領域246,248を構成する各画素の画素値を、
図7の「2回目」の下方に示される固定値だけ変化させる。例えば、CPU32は、黒色領域236に対応する第1の処理済領域246を構成する各画素について、a値及びb値を変更せず、L値を5減らす。また、CPU32は、白色領域238に対応する第1の処理済領域248を構成する各画素について、L値を15減らし、a値を2増やし、b値を1減らす。これにより、CPU32は、第1の処理済領域246に対応する第2の処理済領域256(即ち黒色領域236に対応する第2の処理済領域256)と、第1の処理済領域248に対応する第2の処理済領域258(即ち白色領域238に対応する第2の処理済領域258)と、を含む第2の着色済画像250を生成する。このように、CPU32は、1回目の白髪染めシミュレーション結果(即ち第1の着色済画像240)に含まれる各第1の処理済領域246,248に応じた異なる着色量を利用するので、2回目の白髪染めシミュレーションを適切に実行することができる。
【0043】
特に、白色領域238に対応する1回目の着色処理の着色量(即ちL値マイナス14)と、第1の処理済領域248に対応する2回目の着色処理の着色量(即ちL値マイナス15)と、が異なる。このように、CPU32は、1回目の白髪染めシミュレーション結果の髪色に応じた着色量を利用して、2回目の白髪染めシミュレーションを実行することができる。
【0044】
3回目の着色処理において、CPU32は、第2の着色済画像250に含まれる各第2の処理済領域256,258を構成する各画素の画素値を、
図7の「3回目」の下方に示される固定値だけ変化させる。例えば、CPU32は、黒色領域236に対応する第2の処理済領域256を構成する各画素について、a値及びb値を変更せず、L値を6減らす。また、CPU32は、白色領域238に対応する第2の処理済領域258を構成する各画素について、L値を16減らし、a値を2増やし、b値を1減らす。これにより、CPU32は、第2の処理済領域256に対応する第3の処理済領域266(即ち黒色領域236に対応する第3の処理済領域266)と、第2の処理済領域258に対応する第3の処理済領域268(即ち白色領域238に対応する第3の処理済領域268)と、を含む第3の着色済画像260を生成する。このように、CPU32は、2回目の白髪染めシミュレーション結果(即ち第2の着色済画像250)に含まれる各第2の処理済領域256,258に応じた異なる着色量を利用するので、3回目の白髪染めシミュレーションを適切に実行することができる。
【0045】
特に、第1の処理済領域248に対応する2回目の着色処理の着色量(即ちL値マイナス15)と、第2の処理済領域258に対応する3回目の着色処理の着色量(即ちL値マイナス16)と、が異なる。このように、CPU32は、2回目の白髪染めシミュレーション結果の髪色に応じた着色量を利用して、3回目の白髪染めシミュレーションを実行することができる。
【0046】
なお、上記の着色処理で利用される固定値は、上記の特定の白髪染め剤による白髪染めの効果に対応する値である。従って、仮に、上記の特定の白髪染め剤とは異なる染毛剤に対応する染毛シミュレーションが実行される場合には、当該異なる染毛剤による染毛の効果に対応する値が上記の固定値として利用される。当該異なる染毛剤は、上記の特定の白髪染め剤とは異なる白髪染め剤と、白髪染めとは異なる染毛のための染毛剤と、を含む。
【0047】
図2のS36において、CPU32は、S34で生成された3個の着色済画像240,250,260に対して色空間変換処理を実行する。具体的には、CPU32は、第1の着色済画像240に含まれる複数個の画素のそれぞれについて、Lab→RGB変換テーブル44を利用して、Lab色空間の画素値をRGB色空間の画素値に変換する。これにより、CPU32は、RGB色空間の画素値によって表現される複数個の画素を含む第1のシミュレーション画像を生成することができる。同様に、CPU32は、第2の着色済画像250から第2のシミュレーション画像を生成し、第3の着色済画像260から第3のシミュレーション画像を生成する。
【0048】
S40において、CPU32は、S36で生成された3つのシミュレーション画像を表わす3個のシミュレーション画像データを携帯端末100に送信する。これにより、CPU32は、3個のシミュレーション画像(即ち3個の着色済画像240,250,260)を携帯端末100の表示部116に表示させる。ユーザは、3個のシミュレーション画像を見ることによって、3回の白髪染め剤の利用によって白髪がどのように染毛されていくのかを知ることができる。
【0049】
なお、CPU32は、シミュレーション画像を表示部116に表示させる際に、さらに、おすすめの染毛剤の商品名等を表示部116に表示させてもよい。ここで、おすすめの染毛剤がシミュレーション結果に応じて変わる構成を採用してもよい。
【0050】
(対応関係)
アプリケーションプログラム38、サーバ10が、それぞれ、「プログラム」、「シミュレーション装置」の一例である。携帯端末100の表示部116が、「表示部」の一例である。Lab画像230が、「対象画像」の一例である。黒色、白色が、それぞれ、「第1の髪色」、「第2の髪色」の一例である。L値の範囲0~41、範囲140~255が、それぞれ、「第1の画素値範囲」、「第2の画素値範囲」の一例である。第1の着色処理における黒色領域のL値マイナス4が、「第1の固定値」の一例である。第2の着色処理における白色領域のL値マイナス14、a値プラス2、及び、b値マイナス1が、「第2の固定値」の一例である。白色領域238、第1の処理済領域248、第2の処理済領域258が、それぞれ、「特定の髪色領域」、「特定の第1の処理済領域」、「特定の第2の処理済領域」の一例である。領域236,238が1回目の着色処理の「処理対象領域」の一例であり、領域246,248が2回目の着色処理の「処理対象領域」の一例であり、領域256,258が3回目の着色処理の「処理対象領域」の一例である。
【0051】
図2のS30,S32の処理が、「分類部」によって実行される処理の一例である。S34の処理が、「第1の生成部」、「第2の生成部」、及び、「第3の生成部」(又は「生成部」)によって実行される処理の一例である。S40の処理が、「第1の表示制御部」、「第2の表示制御部」、及び、「第3の表示制御部」(又は「表示制御部」)によって実行される処理の一例である。
【0052】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【0053】
(変形例1)第1~第3の着色処理は、白髪染め処理でなくてもよく、ヘアカラー、ヘアブリーチ、ヘアマニキュア、カラートリートメント等の他の種類の染毛に対応する処理であってもよい。
【0054】
(変形例2)上記の実施例の技術は、サーバ10によって実現されなくてもよく、例えば、携帯端末100にインストールされるアプリケーションプログラムによって実現されてもよい。この場合、
図2のS12~S14に代えて、撮影用画面を表示部116に表示させる処理が実行され、S40に代えて、3個のシミュレーション画像を表示部116に表示させる処理が実行される。本変形例では、上記のアプリケーションプログラムが、「コンピュータプログラム」の一例である。
【0055】
(変形例3)
図2のS14において、CPU32は、静止画を表わす撮影画像データを受信する代わりに、動画を表わす撮影画像データを受信してもよい。この場合、CPU32は、動画に対してS16以降の処理を実行してもよい。一般的に言うと、「対象画像」は、静止画及び動画の双方を含む。
【0056】
(変形例4)2回目及び3回目の着色処理が実行されなくてもよい。即ち、サーバ10は、1回の着色処理のみを実行してもよい。本変形例では、「第2の生成部」、「第2の表示制御部」、「第3の生成部」、及び、「第3の表示制御部」を省略可能である。
【0057】
(変形例5)
図2のS30の処理が実行されなくてもよい。一般的に言うと、「分類部」は、ツヤ領域を白髪に対応する領域と判定しないための処理を実行しなくてもよい。
【0058】
(変形例6)
図2のS36において、CPU32は、例えば、第2の着色済画像250から第2のシミュレーション画像を生成しなくてもよい。この場合、CPU32は、S40において、第1及び第3のシミュレーション画像のみを携帯端末100の表示部116に表示させる。また、別の変形例では、
図2のS36において、CPU32は、例えば、第1及び第2の着色済画像240,250から第1及び第2のシミュレーション画像を生成しなくてもよい。この場合、CPU32は、S40において、第3のシミュレーション画像のみを携帯端末100の表示部116に表示させる。一般的に言うと、「表示制御部」は、N個の着色済画像のうちの少なくとも1個の着色済画像を表示部に表示させればよい。なお、さらに別の変形例では、CPU32は、4回目以降の着色処理をさらに実行してもよい。一般的に言うと、「生成部」は、N回(Nは2以上の整数)の着色処理を実行して、N個の着色済画像を生成すればよい。
【0059】
(変形例7)複数の髪色は、上記の実施例の4つの髪色(即ち、黒色、暗い茶色、明るい茶色、白色)に限定されない。例えば、暗い茶色と明るい茶色が1つの茶色として処理されてもよい。同様に、黒色と茶色が1つの色として処理されてもよいし、茶色と白色が1つの色として処理されてもよい。なお、複数の髪色領域に分類するためのL値の数値範囲は、0~255の範囲で任意に設定可能であるが、以下であってもよい。例えば、黒色に分類されるL値の上限値は、41に限られず、21~61好ましくは31~51のいずれかであってもよい。白色に分類されるL値の下限値は、140に限られず、120~160好ましくは130~150のいずれかであってもよい。暗い茶色及び明るい茶色をまとめた茶色に分類されるL値の下限値、上限値は、それぞれ、42、139に限られず、22~62好ましくは32~52のいずれか、119~159好ましくは129~149のいずれかであってもよい。なお、後述の変形例8のようにLab色空間とは異なる色空間内で髪色領域の分類が実行される場合には、上記のL値の範囲を変換することによって得られる当該異なる色空間内の範囲が利用されてもよい。この変形例も、上記のL値の範囲を利用することに等しい。
【0060】
(変形例8)
図2のS24において、CPU32は、RGB→Lab変換テーブル42を利用せずに、例えば数式を利用して、RGB色空間からLab色空間への色空間変換処理を実行してもよい。この場合、CPU32は、例えば、第1の数式を利用してRGB色空間からXYZ色空間への第1の色変換処理を実行し、その後、第2の数式を利用してXYZ色空間からLab色空間への第2の色変換処理を実行してもよい。また、別の変形例では、CPU32は、S24の処理を実行せずに、RGB色空間においてS30~S34の処理を実行してもよい。この場合、S36の処理も省略することができる。
【0061】
(変形例9)
図2のS20及びS22において、CPU32は、ディープラーニングを利用せずに毛髪領域を特定してもよい。例えば、CPU32は、リサイズ画像220に含まれる各画素を走査して、ヒトの両目に対応する2つの領域を特定する。目は、主に、白目と黒目によって構成されるので、CPU32は、白色の画素とその近傍の黒色の画素とをサーチすることによって、ヒトの両目に対応する2つの領域を特定することができる。次いで、CPU32は、当該2つの領域の近傍の肌色の画素をサーチすることによって、ヒトの顔の肌に対応する領域を特定する。次いで、CPU32は、当該領域の近傍の黒色の画素をサーチすることによって、ヒトの毛髪に対応する毛髪領域を特定する。ここに記載された処理はあくまで例示であり、毛髪領域を特定するための処理は特に限定されない。
【0062】
(変形例10)
図2のS30の処理に注目すると、上記の実施例には以下の技術が記載されていると言える。ヒトの毛髪に対する染毛シミュレーションを実行するためのコンピュータプログラムであって、コンピュータを、以下の各部、即ち、複数の学習データを利用したディープラーニングに従って、前記ヒトを撮影することによって得られる対象画像に含まれる毛髪領域をツヤ領域と非ツヤ領域とに分類する分類部と、前記非ツヤ領域に対する着色処理を実行して着色済画像を生成する生成部であって、前記着色処理と同じ処理は前記ツヤ領域に対して実行されない、前記生成部と、前記着色済画像を表示部に表示させる表示制御部と、として機能させる、コンピュータプログラム。
【0063】
(変形例11)上記の実施例では、CPU32がプログラム38を実行することによって、
図2の各処理が実現される。これに代えて、
図2のいずれかの処理は、論理回路等のハードウェアによって実現されてもよい。
【0064】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【0065】
2:通信システム、6:インターネット、10:シミュレーションサーバ、12:通信インターフェース、30:制御部、32:CPU、34:メモリ、36:OSプログラム、38:アプリケーションプログラム、40:学習データ、42:RGB→Lab変換テーブル、44:Lab→RGB変換テーブル、100:携帯端末、112:通信インターフェース、114:操作部、116:表示部、118:カメラ、130:制御部、132:CPU、134:メモリ、136:OSプログラム、138:ブラウザプログラム、210:撮影画像、220:リサイズ画像、230:Lab画像、240~260:着色済画像