カラー画像のマスク作成方法
【目的】 比較的近い色相の2つの色のうちで、一方の色部分をマスク領域とし、他方の色部分をマスク領域から除外する。
【構成】 カラー画像内においてマスクの対象色と対象外色とを指定し、対象色を示す第1の色ベクトルと対象外色を示す第2の色ベクトルとを求める。さらに、第1と第2の色ベクトルとは独立な第3の色ベクトルを設定する。そして、カラー画像内の各画素の色を、第1ないし第3の色ベクトルの線形結合で表わしたときの、第1ないし第3の色ベクトルに対する第1ないし第3の係数をそれぞれ求める。この第1の係数のビットマップデータを2値化することによって、マスクを表わす2値マスクデータが得られる。
【構成】 カラー画像内においてマスクの対象色と対象外色とを指定し、対象色を示す第1の色ベクトルと対象外色を示す第2の色ベクトルとを求める。さらに、第1と第2の色ベクトルとは独立な第3の色ベクトルを設定する。そして、カラー画像内の各画素の色を、第1ないし第3の色ベクトルの線形結合で表わしたときの、第1ないし第3の色ベクトルに対する第1ないし第3の係数をそれぞれ求める。この第1の係数のビットマップデータを2値化することによって、マスクを表わす2値マスクデータが得られる。
【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、カラー画像内の所望の色部分の切抜き処理等に使用されるマスクを作成する方法に関する。
【0002】
【従来の技術】印刷製版工程においては、写真原稿などのカラー画像の特定の色の部分に対して色変更や鮮鋭度強調等の種々の処理を選択的に行ないたい場合がある。例えば、衣服を着たモデルの衣服の色のみを変更したり、モデルの肌を除く部分に鮮鋭度強調を行ないたい場合などがある。このように、カラー画像の特定の色部分にのみ所望の処理を行なう(または行わない)際には、その色部分を示す切抜きマスクが作成される。
【0003】図1は、カラー画像と好ましいマスクの一例を示す説明図である。図1(A)に示すカラー画像は、黒色の髪のモデルが、黄色地にバラの花の模様がプリントされた衣服を着ている写真である。バラの花は、白色およびピンク色の花びらと、その周囲にある緑色の葉とを有している。図1(B)に示すマスクは、衣服の黄色部分と緑色部分とを示すマスクである。
【0004】カラー画像の色を分析することによってマスクを作成する方法としては、例えば特開平1−298477号公報に記載されたものがある。この方法は、マスク領域となるべき部分(トレーニングエリア)の複数の画素の色を分析してその色の主成分軸を求める。そして、カラー画像内の各画素の色がその主成分軸以外の成分を多く含む場合(すなわち、その色が主成分軸から遠い場合)には、その画素をマスク領域から除外する。
【0005】
【発明が解決しようとする課題】しかし、上述の従来の技術では、図1(B)に示すように黄色をマスク領域としつつ肌色をマスク領域から除外することは困難であった。これは、肌色が黄色成分をかなり含むので、黄色をマスク領域の色として指定した場合には、肌色もマスク領域として認識されてしまうからである。このような問題は、比較的近い色相を有する2つの色の一方をマスク領域とし、他方をマスク領域から除外しようとする場合に共通する問題であった。
【0006】この発明は、従来技術における上述の課題を解決するためになされたものであり、比較的近い色相の2つの色のうちで、一方の色部分をマスク領域とし、他方の色部分をマスク領域から除外することのできるマスク作成方法を提供することを目的とする。
【0007】
【課題を解決するための手段および作用】上述の課題を解決するため、この発明の請求項1に記載した方法は、前記カラー画像内において前記マスクの対象色を指定する工程と、前記カラー画像内において前記マスクの対象外色を指定する工程と、所定の色空間における前記対象色の第1の色ベクトルを求める工程と、前記所定の色空間における前記対象外色の第2の色ベクトルを求める工程と、前記第1と第2の色ベクトルとは独立の第3の色ベクトルを求める工程と、前記カラー画像内の各画素の色を、前記第1ないし第3の色ベクトルの線形結合で表わすときの前記第1ないし第3の色ベクトルに対する第1ないし第3の係数をそれぞれ求める工程と、前記カラー画像内の各画素における前記第1の係数の値に応じて前記マスクを作成する工程と、を備えることを特徴とする。
【0008】上述の方法によれば、対象色に近い色については第1の係数が大で第2の係数は小さく、一方、対象外色に近い色については第1の係数が小で第2の係数が大きくなる。従って、対象色と対象外色の色相が近い場合にも、第1の係数に応じてマスクを作成すれば、対象色に近い色部分をマスク領域とし、対象外色に近い色部分をマスク領域から除外することができる。
【0009】請求項2に記載した方法では、前記マスク作成工程は、前記第1の係数をしきい値で2値化することによって、前記マスクを表わすマスクデータを作成する工程を含む。
【0010】こうすれば、マスク領域のみを示す2値のマスクデータを容易に作成することができる。
【0011】請求項3に記載した方法では、前記第1の係数を2値化する工程は、前記第1の係数の出現頻度を示すヒストグラムを作成する工程と、前記ヒストグラムの極小値における前記第1の係数を前記しきい値として設定する工程と、を備える、。
【0012】こうすれば、ヒストグラムに応じて2値化のしきい値を自動的に決定することができる。
【0013】請求項4に記載した方法では、前記第3の色ベクトルは白色を表わすベクトルである。
【0014】こうすれば、第3の色ベクトルを容易に決定することができる。
【0015】請求項5に記載した方法では、前記第3の色ベクトルを求める工程は、前記第1と第2の色ベクトルを、色相/彩度/明度空間における第4および第5の色ベクトルにそれぞれ変換する工程と、前記第4と第5の色ベクトルの少なくとも一方の彩度成分が所定の値を超える場合には、前記所定の色空間において白色を表わすベクトルを前記第3の色ベクトルとして選択し、前記第4と第5の色ベクトルの少なくとも一方の彩度成分が前記所定の値未満の場合には、前記第4と第5の色ベクトルのうちで彩度成分のより大きな色ベクトルについて前記色相/彩度/明度空間において色相を所定の角度回転した第6の色ベクトルを生成し、前記第6の色ベクトルを前記所定の色空間のベクトルに変換することによって前記第3の色ベクトルを生成する工程と、を備える。
【0016】こうすれば、第1と第2の色ベクトルとは独立な第3の色ベクトルを容易に決定することができる。また、第1ないし第3の色ベクトルはそれぞれ現実の色を表わすことになるので、各画素の色に対する第1の係数が、対象色の成分を実際に表わす指標となる。
【0017】請求項6に記載した方法では、前記第1ないし第3の色ベクトルは単位ベクトルである。
【0018】こうすれば、第1ないし第3の色ベクトルが色相のみを表わすベクトルになるので、カラー画像の各画像の色相に応じてマスクを作成することができる。
【0019】
【実施例】図2は、この発明の一実施例を適用して切抜きマスクを作成するマスク作成システムの構成を示すブロック図である。このマスク作成システムは、CPU20と、カラー原稿画像を記憶する元画像メモリ22と、色ベクトルの成分を記憶するベクトル値メモリ24と、後述するマトリクスの成分を記憶するマトリクスメモリ26と、多階調マスクデータを記憶する多階調マスクメモリと、2値マスクデータを記憶する2値マスクメモリ30とを備えたコンピュータシステムである。このシステムは、さらに、入力手段または指定手段としてのキーボード32およびマウス34と、画像入力手段としての読取スキャナ36と、表示手段としてのカラーCRT38と、外部記憶手段としてのハードディスク装置40とを備えている。
【0020】CPU20は、マトリクス演算部50と、多階調マスク演算部52と、2値化演算部54としての機能を有する。これらの各部は、図示しないRAMに記憶されたソフトウェアプログラムをCPU20が実行することによって実現される。なお、これらの機能については更に後述する。
【0021】図3は、実施例における切抜きマスクの作成の全体手順を示すフローチャートである。ステップS1では、カラー原稿の画像データを読取スキャナ36で読み取って、元画像メモリ22に記憶する。このカラー原稿は、例えば、図1(A)に示すようなカラー写真である。なお、元画像メモリ22はフレームメモリであり、元画像メモリ22に記憶された画像はカラーCRT38に表示される。
【0022】ステップS2およびS3では、ユーザがカラーCRT38に表示されたカラー画像上において、切抜きの対象色と対象外色とをそれぞれ指定する。例えば、図1(A)における衣服の地の色である黄色を対象色として指定し、モデルの肌色を対象外色として指定する。色の指定は、マウス34などのポインティングデバイスを用いて、カラーCRT38に表示されたカラー画像の上の一点を指定することによって行なわれる。この代わりに、近似する色の複数の点を指定して、その平均の色を求める処理によって、対象色と対象外色とをそれぞれ指定するようにしてもよい。
【0023】図4は、マンセルの色相環上における対象色と対象外色の位置を示す説明図である。対象色として指定された黄色と、対象外色として指定された肌色は色相環上で近接した位置にある。この発明では、このように2つの色の色相が近接している場合でも、一方の色をマスクの対象色とし、他方の色をマスクの対象外色とすることが可能である。なお、以下においては、特に言及しない限り、対象色および対象外色として黄色および肌色を指定した場合に特定せず、一般的に説明する。
【0024】ステップS4では、マトリクス演算部50(図2)が対象色と対象外色の色ベクトルをそれぞれ算出するとともに、後述するマトリクス(行列)を求める処理を行なう。
【0025】図5は、ステップS4の詳細手順を示すフローチャートである。ステップS11では、対象色の色ベクトルを正規化することによって、第1の色ベクトルを求める。図6は、第1と第2の色ベクトルを示すグラフである。対象色Csub のRGBの各成分を(R1 ,G1 ,B1 )とすると、対象色Csub を表わすベクトルはVsub (R1 ,G1 ,B1 )と表わされる。なお、図6では図示の便宜上、RGB空間のG軸を省略している。ステップS11においては、マトリクス演算部50がこの色ベクトルVsub の単位ベクトルV1(r1 ,g1 ,b1 )を求め、その成分(r1 ,g1 ,b1 )をベクトル値メモリ24に記憶する。ここで、単位ベクトルとは長さ1のベクトルである。ステップS12においても同様に、対象外色の色ベクトルVnsub(R2 ,G2 ,B2 )の単位ベクトルV2(r2 ,g2 ,b2 )を求め、その成分をベクトル値メモリ24に記憶する。
【0026】こうして得られた第1と第2の色ベクトルV1,V2は、RGB空間内の色を表現するための基底を構成する3つのベクトルのうちの2つを構成する。基底を構成するための第3の色ベクトルV3としては、第1と第2の色ベクトルV1,V2とは独立な単位ベクトルが選択される。すなわち、第3の色ベクトルは、第1と第2の色ベクトルV1,V2の線形結合では表わせない単位ベクトルである。例えば、第3の色ベクトルV3として、白色を表わす単位ベクトルVWHが選択される。白色の単位ベクトルVWHの成分は、(1/√3,1/√3,1/√3)である。
【0027】図7は、第1ないし第3の色ベクトルV1,V2,V3とRGB空間の関係を示す説明図である。この実施例では、次の数式1に示すように、一次独立な3つの色ベクトルV1,V2,V3を基底として用い、RGB空間内の任意の色E(Re,Ge,Be)を、3つの色ベクトルV1,V2,V3の線形結合(一次結合)で表現する。
【0028】
【数1】
【0029】後述するように、マスクを表わすマスクデータは、第1の色ベクトルV1(すなわち、対象色に関する色ベクトル)に対する係数k1に基づいて作成される。ところで、第1と第2の色ベクトルV1,V2のいずれか一方が第3の色ベクトルV3に一致している場合には、3つの色ベクトルが一次独立ではなくなるので、任意の色を3つのベクトルV1〜V3で表現することはできなくなる。また、第1と第2の色ベクトルV1,V2のいずれか一方が第3の色ベクトルV3に十分に近接している場合にも、第1の色ベクトルV1に対する係数k1が過度に大きくなったり小さくなったりすることがある。そこで、図5のステップS13では、第1と第2の色ベクトルV1,V2のいずれか一方が白色の単位ベクトルVWH(1/√3,1/√3,1/√3)に十分に近接しているか否かを調べる。そして、十分に近接している場合には、ステップS14において、第3の色ベクトルV3として白色の単位ベクトルVWH以外のベクトルを設定する。
【0030】まず、ステップS13では、次の数式2に従って、第1と第2の色ベクトルV1,V2をHSV座標系(色相/彩度/明度座標系)に変換する。
【0031】
【数2】
【0032】数式2において、演算子「max」と「min」は、括弧内の値の最大値と最小値をそれぞれ取る演算を示す。数式2によって、第1の色ベクトルV1(r1,g1 ,b1 )と第2の色ベクトルV2(r2 ,g2 ,b2 )のそれぞれの色相値H,明度値V,彩度値Sが求められる。
【0033】図8は、HSV空間を示す説明図である。図8から解るように、白色の単位ベクトルVWHは明度Vの座標軸上に存在する。換言すれば、白色の単位ベクトルVWHは彩度Sと色相Hとを持たないベクトルである。なお、HSV空間は円筒座標系(zrθ座標系)であり、明度Vが垂直座標zに、彩度Sが径rに、色相Hが角度θに相当する。
【0034】彩度値Sが小さい色ベクトルは、白色の単位ベクトルVWH(1/√3,1/√3,1/√3)に近接している。従って、第1と第2の色ベクトルV1,V2の少なくとも一方の彩度値Sが所定の値以下の場合には、その色ベクトルが白色の単位ベクトルVWHに十分に近接していると判断できる。この所定の値としては、例えば、各成分が8ビットのデータ、すなわち0〜255の範囲の値で表わされる場合には10(16進数で0Ah)程度が適当である。
【0035】上述の方法の代わりに、彩度値Sと明度値Vとの比S/Vが一定値以下の場合に、その色ベクトルが白色の単位ベクトルVWHに十分近接しているものと判断するようにしてもよい。
【0036】第1と第2の色ベクトルV1,V2の少なくとも一方が白色の単位ベクトルVWHに十分に近接している場合には、ステップS14において、第3の色ベクトルV3として、白色の単位ベクトルVWH以外のベクトルが求められる。図9は、白色の単位ベクトルVWH以外のベクトルを第3の色ベクトルV3として設定する方法を示す説明図である。まず、第1と第2の色ベクトルV1,V2のうちで、白色の単位ベクトルからより遠い方の色ベクトルを選択する。図9の例では、彩度値Sが比較的大きい第1の色ベクトルV1が選択される。そして、選択された色ベクトルV1の色相値Hから90を減算する。すなわち、HSV空間内で色ベクトルV2を時計廻りに90°回転する。こうして得られたベクトル(H−90,S,V)をRGB座標系に逆変換し、そのRGB成分を正規化することによって、単位ベクトルである第3の色ベクトルV3が得られる。図9には、このような演算によって得られた第3の色ベクトルV3が描かれている。なお、回転角度は90°以外の任意の角度とすることも可能である。
【0037】上述の手順によって得られた第3の色ベクトルV3は、第1と第2の色ベクトルV1,V2から独立なので、3つの色ベクトルV1〜V3を基底として用いることができる。換言すれば、RGB色空間内の任意の色が、上述の数式1のように、3つの色ベクトルV1〜V3の線形結合によって表わされる。また、第3の色ベクトルV3は第1または第2の色ベクトルの色相を回転したものなので、現実に存在する色を示すベクトルである。3つの色ベクトルV1〜V3はいずれも現実の色を示すベクトルなので、各色ベクトルに対する係数k1〜k3の値が、3つの色の混合比を表わす現実的な意味を有することになる。
【0038】第3の色ベクトルとしては、第1と第2の色ベクトルV1,V2とは独立なベクトルを選択すればよいので、上記以外の種々の方法で第3の色ベクトルを設定することができる。例えば、第1と第2の色ベクトルV1,V2の外積V1×V2を第3の色ベクトルV3として使用することも可能である。しかし、この外積V1×V2は現実の色を表わさない場合があり、この場合には各色ベクトルに対する係数k1〜k3の値が現実的な意味を有さなくなる。従って、上述したように、第1と第2の色ベクトルの色相を回転することによって第3の色ベクトルを求める方が好ましい。
【0039】こうして第3の色ベクトルV3が決定されると、ステップS15(図5)において3つの色ベクトルV1〜V3の成分で構成される3×3マトリクスM(数式1参照)が作成され、マトリクスメモリ26に記憶される。
【0040】任意の色E(Re,Ge,Be)に対する係数K(k1,k2,k3)は、次の数式3で与えられる。
【0041】
【数3】
【0042】従って、マトリクスMの逆行列M-1を求めておけば、任意の色E(Re,Ge,Be)にこの逆行列M-1を乗ずることによって、係数K(k1,k2,k3)を求めることができる。そこで、ステップS16では、マトリクス演算部50がこの逆行列M-1を演算し、マトリクスメモリ26に格納する。
【0043】こうして、図3のステップS4の処理が終了すると、ステップS5において多階調マスクが作成される。図10は、多階調マスクの作成手順を示すフローチャートである。ステップS21では、多階調マスク演算部52が元画像メモリ22内のカラー画像の各画素の画素値E(Re,Ge,Be)を読出し、数式3の右辺に代入してその係数K(k1,k2,k3)を求める。ステップS22では、得られた係数K(k1,k2,k3)の中から第1の色ベクトルV1の係数k1を抽出し、ステップS23で多階調マスクメモリ28に格納する。
【0044】第1の係数k1は、各画素の色における第1の色ベクトルV1の強度を示している。換言すれば、各画素の色が第1の色ベクトルV1の成分を多く含むほど第1の係数k1の値が大きい。従って、カラー画像内の全画素についての第1の係数k1を表わすビットマップデータは、対象色に近似した色の領域を示す多階調マスクとして使用できる。
【0045】なお、第1の係数k1の値が負の場合には、その画素は切抜きの対象色とは正反対の色を有するので、その係数k1の値を0に置換してもよい。
【0046】また、各画素の第1の係数k1を、対象色に対する第1の係数k1a(=R1/r1 =G1 /g1 =B1 /b1 )で除算して得られた値kk(=k1/k1a)を、多階調マスクとして使用することも可能である。この際、kkの値が1以上の場合にはこれを1に置き換え、また、負の値を0に置き換えても良い。こうすれば、多階調マスクを表わすビットマップデータの値を0〜1の範囲内に納めることができるので、後述する2値化処理におけるしきい値の設定が容易になる。
【0047】あるいは、各画素における3つの係数k1,k2,k3の値を次の数式4に従って正規化し、正規化された係数ku1のビットマップデータを多階調マスクとして用いるようにしてもよい。
【0048】
【数4】
【0049】なお、係数ku1に関しても、負の値を0にすることが好ましい。こうして得られた係数ku1も0〜1の範囲内に納めることができるので、後述する2値化処理におけるしきい値の設定が容易になる。
【0050】こうして多階調マスクが作成されると、図3R>3のステップS6において、多階調マスクをそのまま出力するか、2値マスクを作成して出力するかの選択指示を受ける。指示がNoであれば、ステップS7において、多階調マスクが出力される。
【0051】多階調マスクの用途としては、例えば、透かし合成処理が挙げられ、この場合には、対象色の強度を合成比率として利用することができる。また、多階調マスクの階調値を参照することで、切抜き対象部分に施す画像処理の強弱あるいは重み付けが可能となる。例えば、画像の対象部分に輪郭強調処理を施す場合、マスクの階調値が高い部分には強い輪郭強調、階調値が低い部分には弱い輪郭強調をかけることができる。
【0052】ステップS6における指示がYesであれば、ステップS8において、2値化演算部54が多階調マスクを2値化することによって2値マスクが作成され、さらにステップS9において、2値マスクが出力される。2値化に用いられるしきい値を設定する方法としては、以下のような種々のものが考えられる。
【0053】図11は、マニュアルでしきい値を入力しつつ2値マスクを作成する手順を示すフローチャートである。ユーザが対話処理によってしきい値を入力すると(ステップS31)、そのしきい値を用いて2値化演算部54が多階調マスクを2値化することにより2値マスクを作成する(ステップS32)。ユーザは、カラーCRT38に表示された2値化マスクを観察し、満足のいくものであるか否かを判断する(ステップS33,S34)。なお、2値マスクの表示の際には、図1(A),1(B)のように、カラー画像と2値マスクとを並べて表示するのが好ましい。2値マスクが満足のいくものでない場合には、ステップS31に戻って新たなしきい値を入力し、2値化処理を再度実行する。一方、2値マスクが満足のいくものであれば、2値化処理を終了する。図11の手順に従って2値マスクを作成すれば、ユーザが欲するマスクを作成しやすいという利点がある。
【0054】多階調マスクの分布に基づいて2値化のしきい値を自動的に設定することも可能である。図12は、多階調マスクデータのヒストグラムである。図12の横軸における値Kstは、対象色の多階調マスク値である。通常のカラー画像では、切抜きの対象色に近い色を有する画素がかなり多い場合が普通であるので、対象色のマスク値の付近にヒストグラムのピークが現われる。また、画像の背景部分は暗い色を有しているので、マスク値が小さい部分にもピークが現われる。このような場合には、図12に示すように、対象色のマスク値Kstよりも小さな値xにおいて出現頻度が極小値を示す。従って、対象色に対するマスク値Kstよりも小さく、かつ、出現頻度が極小値を示すマスク値xを求めてこれを2値化のしきい値とすれば、対象色に近い色の部分を表わす2値マスクを作成することができる。
【0055】なお、図13に示すように、多階調マスク値の最大値を所定の値Kmax とし、Kmax 以上の値をすべてKmax で置き換えるようにすれば、出現頻度が極小値となるマスク値xを、より容易に求めることが可能である。この値Kmax としては、多階調マスク値が8ビットデータで表わされる場合には、128程度の値が適当である。
【0056】2値化のしきい値を求める方法としては、多階調マスク値のヒストグラムに基づいて、いわゆる非階層的クラスタリング法(再配置法、k−mean法とも呼ばれる)を用いて決定することができる。この方法によってヒストグラム内のクラスタを求め、対象色のクラスタの下限値をしきい値として使用すれば、対象色に近似する色部分を示す2値マスクを得ることができる。
【0057】図14は、2値マスクで切り抜かれる色の領域を示すグラフである。領域(Ra+Rb)内の色は、第1の色ベクトルV1の係数k1の値がTa以上となる色である。また、領域Rb内の色は、第1の色ベクトルV1の係数k1の値がTb以上となる色である。従って、2値化のしきい値をTaに設定すれば、領域(Ra+Rb)内の色の部分を示す2値マスクを作成することができる。この際、領域Raの左側に隣接する領域Rc内の色は、対象色の成分が小さいのでマスク領域からは除外されることになる。なお、2値化のしきい値をTbに設定すれば、領域Rb内の色の部分を示す2値マスクを作成することができる。
【0058】図15は、実施例によって作成されたマスクの効果を示す説明図である。図15における多数の丸は、カラー画像内における色の分布を示している。このカラー画像は、対象色Csub に近い色の画素の第1の集合Ob1と、対象外色Cnsubに近い色の画素の第2の集合Ob2とを含んでいる。第1の集合Ob1には、写真撮影時に光線が反射して光った部分(いわゆるハイライト領域)の色が存在する。例えば、図1(A)のカラー原稿において、黄色い服地の光った部分などがこのハイライト領域に対応している。上述の実施例によれば、しきい値を図中のTaに設定することによって、ハイライト領域を含む第1の集合Ob1を含み、第2の集合Ob2を除外するような2値マスクを得ることができる。第1の集合Ob1内のハイライト領域と第2の集合Ob2とは、どちらもB成分が大きいので、RGB空間における色ベクトルを使用する従来の方法では、このハイライト領域と第2の集合Ob2とを分離することは不可能である。これに対して、この実施例による方法では、対象色に近いハイライト領域を、第2の集合Ob2から容易に分離することができる。
【0059】なお、図1(A)のカラー画像において、服地の色である黄色を対象色Csubとして指定し、モデルの肌色を対象外色Cnsubとして指定すれば、服地の黄色部分を示す図1(B)のマスクを得ることができる。なお、図4に示すマンセルの色相環からも解るように、緑色は対象色から見て対象外色とは反対側の色相である。従って、対象色Csub を黄色と指定し、対象外色Cnsubを肌色と指定すると、緑色の葉の部分もマスク領域に含まれることになる。すなわち、図1(B)に示すように、黄色と緑色の部分をマスク領域とする2値マスクを得ることができる。
【0060】以上のように、この実施例では、対象色Csub と対象外色Cnsubとを指定することによって、対象色Csub に近い色部分を含み、かつ、対象外色Cnsubに近い色を含まないマスクを容易に得ることができる。
【0061】なお、この発明は上記実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【0062】(1)上記実施例では、色空間としてRGB座標系を用いたが、CIE−XYZ座標系,YMC座標系,YUV座標系などの他の色空間を用いてもよい。
【0063】(2)前述の数式3または4で得られた第1の係数k1またはku1をそのまま多階調マスクデータとして使用し、多階調マスクデータが正の画素については2値マスクの値を1とし、負の画素については2値マスクの値を0としてもよい。すなわち、しきい値として0を用いても良い。特に、カラー画像の色を変更するための2値マスクを作成する場合には、このような方法によっても良好なマスクを得ることができる。
【0064】(3)第1ないし第3の色ベクトルは、単位ベクトルでなくてもよい。ただし、第1ないし第3の色ベクトルを単位ベクトルとすれば、各色ベクトルが色相のみを表わすベクトルになる。従って、上述のように第1の係数に応じてマスクを作成すれば、カラー画像の各画素の色相に応じてマスク領域を決定することが可能である。
【0065】
【発明の効果】以上説明したように、請求項1に記載した発明によれば、対象色と対象外色の色相が近い場合にも、対象色に近い色部分をマスク領域とし、対象外色に近い色部分をマスク領域から除外することができる。
【0066】請求項2に記載した発明によれば、マスク領域のみを示す2値のマスクデータを容易に作成することができる。
【0067】請求項3に記載した発明によれば、ヒストグラムに応じて2値化のしきい値を自動的に決定することができる。
【0068】請求項4に記載した発明によれば、第3の色ベクトルを容易に決定することができる。
【0069】請求項5に記載した発明によれば、第1と第2の色ベクトルとは独立な第3の色ベクトルを容易に決定することができる。また、第1ないし第3の色ベクトルはそれぞれ現実の色を表わすことになるので、各画素の色に対する第1の係数を、対象色の成分を実際に表わす指標とすることができる。
【0070】請求項6に記載した発明によれば、第1ないし第3の色ベクトルが色相のみを表わすベクトルになるので、カラー画像の各画像の色相に応じてマスクを作成することができる。
【図面の簡単な説明】
【図1】カラー写真原稿とそのマスクを示す説明図。
【図2】この発明の一実施例を適用して切抜きマスクを作成するマスク作成システムの構成を示すブロック図。
【図3】実施例における切抜きマスクの作成の全体手順を示すフローチャート。
【図4】マンセルの色相環上における対象色(黄色)と対象外色(肌色)の位置を示す説明図。
【図5】ステップS4の詳細手順を示すフローチャート。
【図6】第1と第2の色ベクトルV1,V2を示すグラフ。
【図7】第1ないし第3の色ベクトルV1,V2,V3とRGB空間の関係を示す説明図。
【図8】HSV空間を示す説明図。
【図9】白色の単位ベクトルVWH以外のベクトルを第3の色ベクトルV3として設定する方法を示す説明図。
【図10】多階調マスクの作成手順を示すフローチャート。
【図11】2値マスクの作成手順を示すフローチャート。
【図12】多階調マスクデータのヒストグラム。
【図13】多階調マスクデータのヒストグラム。
【図14】2値マスクで切り抜かれる色の領域を示すグラフ。
【図15】実施例によって作成されたマスクの効果を示す説明図。
【符号の説明】
20…CPU
22…元画像メモリ
24…ベクトル値メモリ
26…マトリクスメモリ
28…多階調マスクメモリ
32…キーボード
34…マウス
36…読取スキャナ
38…カラーCRT
40…ハードディスク装置
50…マトリクス演算部
52…多階調マスク演算部
Cnsub…対象外色
Csub …対象色
【0001】
【産業上の利用分野】この発明は、カラー画像内の所望の色部分の切抜き処理等に使用されるマスクを作成する方法に関する。
【0002】
【従来の技術】印刷製版工程においては、写真原稿などのカラー画像の特定の色の部分に対して色変更や鮮鋭度強調等の種々の処理を選択的に行ないたい場合がある。例えば、衣服を着たモデルの衣服の色のみを変更したり、モデルの肌を除く部分に鮮鋭度強調を行ないたい場合などがある。このように、カラー画像の特定の色部分にのみ所望の処理を行なう(または行わない)際には、その色部分を示す切抜きマスクが作成される。
【0003】図1は、カラー画像と好ましいマスクの一例を示す説明図である。図1(A)に示すカラー画像は、黒色の髪のモデルが、黄色地にバラの花の模様がプリントされた衣服を着ている写真である。バラの花は、白色およびピンク色の花びらと、その周囲にある緑色の葉とを有している。図1(B)に示すマスクは、衣服の黄色部分と緑色部分とを示すマスクである。
【0004】カラー画像の色を分析することによってマスクを作成する方法としては、例えば特開平1−298477号公報に記載されたものがある。この方法は、マスク領域となるべき部分(トレーニングエリア)の複数の画素の色を分析してその色の主成分軸を求める。そして、カラー画像内の各画素の色がその主成分軸以外の成分を多く含む場合(すなわち、その色が主成分軸から遠い場合)には、その画素をマスク領域から除外する。
【0005】
【発明が解決しようとする課題】しかし、上述の従来の技術では、図1(B)に示すように黄色をマスク領域としつつ肌色をマスク領域から除外することは困難であった。これは、肌色が黄色成分をかなり含むので、黄色をマスク領域の色として指定した場合には、肌色もマスク領域として認識されてしまうからである。このような問題は、比較的近い色相を有する2つの色の一方をマスク領域とし、他方をマスク領域から除外しようとする場合に共通する問題であった。
【0006】この発明は、従来技術における上述の課題を解決するためになされたものであり、比較的近い色相の2つの色のうちで、一方の色部分をマスク領域とし、他方の色部分をマスク領域から除外することのできるマスク作成方法を提供することを目的とする。
【0007】
【課題を解決するための手段および作用】上述の課題を解決するため、この発明の請求項1に記載した方法は、前記カラー画像内において前記マスクの対象色を指定する工程と、前記カラー画像内において前記マスクの対象外色を指定する工程と、所定の色空間における前記対象色の第1の色ベクトルを求める工程と、前記所定の色空間における前記対象外色の第2の色ベクトルを求める工程と、前記第1と第2の色ベクトルとは独立の第3の色ベクトルを求める工程と、前記カラー画像内の各画素の色を、前記第1ないし第3の色ベクトルの線形結合で表わすときの前記第1ないし第3の色ベクトルに対する第1ないし第3の係数をそれぞれ求める工程と、前記カラー画像内の各画素における前記第1の係数の値に応じて前記マスクを作成する工程と、を備えることを特徴とする。
【0008】上述の方法によれば、対象色に近い色については第1の係数が大で第2の係数は小さく、一方、対象外色に近い色については第1の係数が小で第2の係数が大きくなる。従って、対象色と対象外色の色相が近い場合にも、第1の係数に応じてマスクを作成すれば、対象色に近い色部分をマスク領域とし、対象外色に近い色部分をマスク領域から除外することができる。
【0009】請求項2に記載した方法では、前記マスク作成工程は、前記第1の係数をしきい値で2値化することによって、前記マスクを表わすマスクデータを作成する工程を含む。
【0010】こうすれば、マスク領域のみを示す2値のマスクデータを容易に作成することができる。
【0011】請求項3に記載した方法では、前記第1の係数を2値化する工程は、前記第1の係数の出現頻度を示すヒストグラムを作成する工程と、前記ヒストグラムの極小値における前記第1の係数を前記しきい値として設定する工程と、を備える、。
【0012】こうすれば、ヒストグラムに応じて2値化のしきい値を自動的に決定することができる。
【0013】請求項4に記載した方法では、前記第3の色ベクトルは白色を表わすベクトルである。
【0014】こうすれば、第3の色ベクトルを容易に決定することができる。
【0015】請求項5に記載した方法では、前記第3の色ベクトルを求める工程は、前記第1と第2の色ベクトルを、色相/彩度/明度空間における第4および第5の色ベクトルにそれぞれ変換する工程と、前記第4と第5の色ベクトルの少なくとも一方の彩度成分が所定の値を超える場合には、前記所定の色空間において白色を表わすベクトルを前記第3の色ベクトルとして選択し、前記第4と第5の色ベクトルの少なくとも一方の彩度成分が前記所定の値未満の場合には、前記第4と第5の色ベクトルのうちで彩度成分のより大きな色ベクトルについて前記色相/彩度/明度空間において色相を所定の角度回転した第6の色ベクトルを生成し、前記第6の色ベクトルを前記所定の色空間のベクトルに変換することによって前記第3の色ベクトルを生成する工程と、を備える。
【0016】こうすれば、第1と第2の色ベクトルとは独立な第3の色ベクトルを容易に決定することができる。また、第1ないし第3の色ベクトルはそれぞれ現実の色を表わすことになるので、各画素の色に対する第1の係数が、対象色の成分を実際に表わす指標となる。
【0017】請求項6に記載した方法では、前記第1ないし第3の色ベクトルは単位ベクトルである。
【0018】こうすれば、第1ないし第3の色ベクトルが色相のみを表わすベクトルになるので、カラー画像の各画像の色相に応じてマスクを作成することができる。
【0019】
【実施例】図2は、この発明の一実施例を適用して切抜きマスクを作成するマスク作成システムの構成を示すブロック図である。このマスク作成システムは、CPU20と、カラー原稿画像を記憶する元画像メモリ22と、色ベクトルの成分を記憶するベクトル値メモリ24と、後述するマトリクスの成分を記憶するマトリクスメモリ26と、多階調マスクデータを記憶する多階調マスクメモリと、2値マスクデータを記憶する2値マスクメモリ30とを備えたコンピュータシステムである。このシステムは、さらに、入力手段または指定手段としてのキーボード32およびマウス34と、画像入力手段としての読取スキャナ36と、表示手段としてのカラーCRT38と、外部記憶手段としてのハードディスク装置40とを備えている。
【0020】CPU20は、マトリクス演算部50と、多階調マスク演算部52と、2値化演算部54としての機能を有する。これらの各部は、図示しないRAMに記憶されたソフトウェアプログラムをCPU20が実行することによって実現される。なお、これらの機能については更に後述する。
【0021】図3は、実施例における切抜きマスクの作成の全体手順を示すフローチャートである。ステップS1では、カラー原稿の画像データを読取スキャナ36で読み取って、元画像メモリ22に記憶する。このカラー原稿は、例えば、図1(A)に示すようなカラー写真である。なお、元画像メモリ22はフレームメモリであり、元画像メモリ22に記憶された画像はカラーCRT38に表示される。
【0022】ステップS2およびS3では、ユーザがカラーCRT38に表示されたカラー画像上において、切抜きの対象色と対象外色とをそれぞれ指定する。例えば、図1(A)における衣服の地の色である黄色を対象色として指定し、モデルの肌色を対象外色として指定する。色の指定は、マウス34などのポインティングデバイスを用いて、カラーCRT38に表示されたカラー画像の上の一点を指定することによって行なわれる。この代わりに、近似する色の複数の点を指定して、その平均の色を求める処理によって、対象色と対象外色とをそれぞれ指定するようにしてもよい。
【0023】図4は、マンセルの色相環上における対象色と対象外色の位置を示す説明図である。対象色として指定された黄色と、対象外色として指定された肌色は色相環上で近接した位置にある。この発明では、このように2つの色の色相が近接している場合でも、一方の色をマスクの対象色とし、他方の色をマスクの対象外色とすることが可能である。なお、以下においては、特に言及しない限り、対象色および対象外色として黄色および肌色を指定した場合に特定せず、一般的に説明する。
【0024】ステップS4では、マトリクス演算部50(図2)が対象色と対象外色の色ベクトルをそれぞれ算出するとともに、後述するマトリクス(行列)を求める処理を行なう。
【0025】図5は、ステップS4の詳細手順を示すフローチャートである。ステップS11では、対象色の色ベクトルを正規化することによって、第1の色ベクトルを求める。図6は、第1と第2の色ベクトルを示すグラフである。対象色Csub のRGBの各成分を(R1 ,G1 ,B1 )とすると、対象色Csub を表わすベクトルはVsub (R1 ,G1 ,B1 )と表わされる。なお、図6では図示の便宜上、RGB空間のG軸を省略している。ステップS11においては、マトリクス演算部50がこの色ベクトルVsub の単位ベクトルV1(r1 ,g1 ,b1 )を求め、その成分(r1 ,g1 ,b1 )をベクトル値メモリ24に記憶する。ここで、単位ベクトルとは長さ1のベクトルである。ステップS12においても同様に、対象外色の色ベクトルVnsub(R2 ,G2 ,B2 )の単位ベクトルV2(r2 ,g2 ,b2 )を求め、その成分をベクトル値メモリ24に記憶する。
【0026】こうして得られた第1と第2の色ベクトルV1,V2は、RGB空間内の色を表現するための基底を構成する3つのベクトルのうちの2つを構成する。基底を構成するための第3の色ベクトルV3としては、第1と第2の色ベクトルV1,V2とは独立な単位ベクトルが選択される。すなわち、第3の色ベクトルは、第1と第2の色ベクトルV1,V2の線形結合では表わせない単位ベクトルである。例えば、第3の色ベクトルV3として、白色を表わす単位ベクトルVWHが選択される。白色の単位ベクトルVWHの成分は、(1/√3,1/√3,1/√3)である。
【0027】図7は、第1ないし第3の色ベクトルV1,V2,V3とRGB空間の関係を示す説明図である。この実施例では、次の数式1に示すように、一次独立な3つの色ベクトルV1,V2,V3を基底として用い、RGB空間内の任意の色E(Re,Ge,Be)を、3つの色ベクトルV1,V2,V3の線形結合(一次結合)で表現する。
【0028】
【数1】
【0029】後述するように、マスクを表わすマスクデータは、第1の色ベクトルV1(すなわち、対象色に関する色ベクトル)に対する係数k1に基づいて作成される。ところで、第1と第2の色ベクトルV1,V2のいずれか一方が第3の色ベクトルV3に一致している場合には、3つの色ベクトルが一次独立ではなくなるので、任意の色を3つのベクトルV1〜V3で表現することはできなくなる。また、第1と第2の色ベクトルV1,V2のいずれか一方が第3の色ベクトルV3に十分に近接している場合にも、第1の色ベクトルV1に対する係数k1が過度に大きくなったり小さくなったりすることがある。そこで、図5のステップS13では、第1と第2の色ベクトルV1,V2のいずれか一方が白色の単位ベクトルVWH(1/√3,1/√3,1/√3)に十分に近接しているか否かを調べる。そして、十分に近接している場合には、ステップS14において、第3の色ベクトルV3として白色の単位ベクトルVWH以外のベクトルを設定する。
【0030】まず、ステップS13では、次の数式2に従って、第1と第2の色ベクトルV1,V2をHSV座標系(色相/彩度/明度座標系)に変換する。
【0031】
【数2】
【0032】数式2において、演算子「max」と「min」は、括弧内の値の最大値と最小値をそれぞれ取る演算を示す。数式2によって、第1の色ベクトルV1(r1,g1 ,b1 )と第2の色ベクトルV2(r2 ,g2 ,b2 )のそれぞれの色相値H,明度値V,彩度値Sが求められる。
【0033】図8は、HSV空間を示す説明図である。図8から解るように、白色の単位ベクトルVWHは明度Vの座標軸上に存在する。換言すれば、白色の単位ベクトルVWHは彩度Sと色相Hとを持たないベクトルである。なお、HSV空間は円筒座標系(zrθ座標系)であり、明度Vが垂直座標zに、彩度Sが径rに、色相Hが角度θに相当する。
【0034】彩度値Sが小さい色ベクトルは、白色の単位ベクトルVWH(1/√3,1/√3,1/√3)に近接している。従って、第1と第2の色ベクトルV1,V2の少なくとも一方の彩度値Sが所定の値以下の場合には、その色ベクトルが白色の単位ベクトルVWHに十分に近接していると判断できる。この所定の値としては、例えば、各成分が8ビットのデータ、すなわち0〜255の範囲の値で表わされる場合には10(16進数で0Ah)程度が適当である。
【0035】上述の方法の代わりに、彩度値Sと明度値Vとの比S/Vが一定値以下の場合に、その色ベクトルが白色の単位ベクトルVWHに十分近接しているものと判断するようにしてもよい。
【0036】第1と第2の色ベクトルV1,V2の少なくとも一方が白色の単位ベクトルVWHに十分に近接している場合には、ステップS14において、第3の色ベクトルV3として、白色の単位ベクトルVWH以外のベクトルが求められる。図9は、白色の単位ベクトルVWH以外のベクトルを第3の色ベクトルV3として設定する方法を示す説明図である。まず、第1と第2の色ベクトルV1,V2のうちで、白色の単位ベクトルからより遠い方の色ベクトルを選択する。図9の例では、彩度値Sが比較的大きい第1の色ベクトルV1が選択される。そして、選択された色ベクトルV1の色相値Hから90を減算する。すなわち、HSV空間内で色ベクトルV2を時計廻りに90°回転する。こうして得られたベクトル(H−90,S,V)をRGB座標系に逆変換し、そのRGB成分を正規化することによって、単位ベクトルである第3の色ベクトルV3が得られる。図9には、このような演算によって得られた第3の色ベクトルV3が描かれている。なお、回転角度は90°以外の任意の角度とすることも可能である。
【0037】上述の手順によって得られた第3の色ベクトルV3は、第1と第2の色ベクトルV1,V2から独立なので、3つの色ベクトルV1〜V3を基底として用いることができる。換言すれば、RGB色空間内の任意の色が、上述の数式1のように、3つの色ベクトルV1〜V3の線形結合によって表わされる。また、第3の色ベクトルV3は第1または第2の色ベクトルの色相を回転したものなので、現実に存在する色を示すベクトルである。3つの色ベクトルV1〜V3はいずれも現実の色を示すベクトルなので、各色ベクトルに対する係数k1〜k3の値が、3つの色の混合比を表わす現実的な意味を有することになる。
【0038】第3の色ベクトルとしては、第1と第2の色ベクトルV1,V2とは独立なベクトルを選択すればよいので、上記以外の種々の方法で第3の色ベクトルを設定することができる。例えば、第1と第2の色ベクトルV1,V2の外積V1×V2を第3の色ベクトルV3として使用することも可能である。しかし、この外積V1×V2は現実の色を表わさない場合があり、この場合には各色ベクトルに対する係数k1〜k3の値が現実的な意味を有さなくなる。従って、上述したように、第1と第2の色ベクトルの色相を回転することによって第3の色ベクトルを求める方が好ましい。
【0039】こうして第3の色ベクトルV3が決定されると、ステップS15(図5)において3つの色ベクトルV1〜V3の成分で構成される3×3マトリクスM(数式1参照)が作成され、マトリクスメモリ26に記憶される。
【0040】任意の色E(Re,Ge,Be)に対する係数K(k1,k2,k3)は、次の数式3で与えられる。
【0041】
【数3】
【0042】従って、マトリクスMの逆行列M-1を求めておけば、任意の色E(Re,Ge,Be)にこの逆行列M-1を乗ずることによって、係数K(k1,k2,k3)を求めることができる。そこで、ステップS16では、マトリクス演算部50がこの逆行列M-1を演算し、マトリクスメモリ26に格納する。
【0043】こうして、図3のステップS4の処理が終了すると、ステップS5において多階調マスクが作成される。図10は、多階調マスクの作成手順を示すフローチャートである。ステップS21では、多階調マスク演算部52が元画像メモリ22内のカラー画像の各画素の画素値E(Re,Ge,Be)を読出し、数式3の右辺に代入してその係数K(k1,k2,k3)を求める。ステップS22では、得られた係数K(k1,k2,k3)の中から第1の色ベクトルV1の係数k1を抽出し、ステップS23で多階調マスクメモリ28に格納する。
【0044】第1の係数k1は、各画素の色における第1の色ベクトルV1の強度を示している。換言すれば、各画素の色が第1の色ベクトルV1の成分を多く含むほど第1の係数k1の値が大きい。従って、カラー画像内の全画素についての第1の係数k1を表わすビットマップデータは、対象色に近似した色の領域を示す多階調マスクとして使用できる。
【0045】なお、第1の係数k1の値が負の場合には、その画素は切抜きの対象色とは正反対の色を有するので、その係数k1の値を0に置換してもよい。
【0046】また、各画素の第1の係数k1を、対象色に対する第1の係数k1a(=R1/r1 =G1 /g1 =B1 /b1 )で除算して得られた値kk(=k1/k1a)を、多階調マスクとして使用することも可能である。この際、kkの値が1以上の場合にはこれを1に置き換え、また、負の値を0に置き換えても良い。こうすれば、多階調マスクを表わすビットマップデータの値を0〜1の範囲内に納めることができるので、後述する2値化処理におけるしきい値の設定が容易になる。
【0047】あるいは、各画素における3つの係数k1,k2,k3の値を次の数式4に従って正規化し、正規化された係数ku1のビットマップデータを多階調マスクとして用いるようにしてもよい。
【0048】
【数4】
【0049】なお、係数ku1に関しても、負の値を0にすることが好ましい。こうして得られた係数ku1も0〜1の範囲内に納めることができるので、後述する2値化処理におけるしきい値の設定が容易になる。
【0050】こうして多階調マスクが作成されると、図3R>3のステップS6において、多階調マスクをそのまま出力するか、2値マスクを作成して出力するかの選択指示を受ける。指示がNoであれば、ステップS7において、多階調マスクが出力される。
【0051】多階調マスクの用途としては、例えば、透かし合成処理が挙げられ、この場合には、対象色の強度を合成比率として利用することができる。また、多階調マスクの階調値を参照することで、切抜き対象部分に施す画像処理の強弱あるいは重み付けが可能となる。例えば、画像の対象部分に輪郭強調処理を施す場合、マスクの階調値が高い部分には強い輪郭強調、階調値が低い部分には弱い輪郭強調をかけることができる。
【0052】ステップS6における指示がYesであれば、ステップS8において、2値化演算部54が多階調マスクを2値化することによって2値マスクが作成され、さらにステップS9において、2値マスクが出力される。2値化に用いられるしきい値を設定する方法としては、以下のような種々のものが考えられる。
【0053】図11は、マニュアルでしきい値を入力しつつ2値マスクを作成する手順を示すフローチャートである。ユーザが対話処理によってしきい値を入力すると(ステップS31)、そのしきい値を用いて2値化演算部54が多階調マスクを2値化することにより2値マスクを作成する(ステップS32)。ユーザは、カラーCRT38に表示された2値化マスクを観察し、満足のいくものであるか否かを判断する(ステップS33,S34)。なお、2値マスクの表示の際には、図1(A),1(B)のように、カラー画像と2値マスクとを並べて表示するのが好ましい。2値マスクが満足のいくものでない場合には、ステップS31に戻って新たなしきい値を入力し、2値化処理を再度実行する。一方、2値マスクが満足のいくものであれば、2値化処理を終了する。図11の手順に従って2値マスクを作成すれば、ユーザが欲するマスクを作成しやすいという利点がある。
【0054】多階調マスクの分布に基づいて2値化のしきい値を自動的に設定することも可能である。図12は、多階調マスクデータのヒストグラムである。図12の横軸における値Kstは、対象色の多階調マスク値である。通常のカラー画像では、切抜きの対象色に近い色を有する画素がかなり多い場合が普通であるので、対象色のマスク値の付近にヒストグラムのピークが現われる。また、画像の背景部分は暗い色を有しているので、マスク値が小さい部分にもピークが現われる。このような場合には、図12に示すように、対象色のマスク値Kstよりも小さな値xにおいて出現頻度が極小値を示す。従って、対象色に対するマスク値Kstよりも小さく、かつ、出現頻度が極小値を示すマスク値xを求めてこれを2値化のしきい値とすれば、対象色に近い色の部分を表わす2値マスクを作成することができる。
【0055】なお、図13に示すように、多階調マスク値の最大値を所定の値Kmax とし、Kmax 以上の値をすべてKmax で置き換えるようにすれば、出現頻度が極小値となるマスク値xを、より容易に求めることが可能である。この値Kmax としては、多階調マスク値が8ビットデータで表わされる場合には、128程度の値が適当である。
【0056】2値化のしきい値を求める方法としては、多階調マスク値のヒストグラムに基づいて、いわゆる非階層的クラスタリング法(再配置法、k−mean法とも呼ばれる)を用いて決定することができる。この方法によってヒストグラム内のクラスタを求め、対象色のクラスタの下限値をしきい値として使用すれば、対象色に近似する色部分を示す2値マスクを得ることができる。
【0057】図14は、2値マスクで切り抜かれる色の領域を示すグラフである。領域(Ra+Rb)内の色は、第1の色ベクトルV1の係数k1の値がTa以上となる色である。また、領域Rb内の色は、第1の色ベクトルV1の係数k1の値がTb以上となる色である。従って、2値化のしきい値をTaに設定すれば、領域(Ra+Rb)内の色の部分を示す2値マスクを作成することができる。この際、領域Raの左側に隣接する領域Rc内の色は、対象色の成分が小さいのでマスク領域からは除外されることになる。なお、2値化のしきい値をTbに設定すれば、領域Rb内の色の部分を示す2値マスクを作成することができる。
【0058】図15は、実施例によって作成されたマスクの効果を示す説明図である。図15における多数の丸は、カラー画像内における色の分布を示している。このカラー画像は、対象色Csub に近い色の画素の第1の集合Ob1と、対象外色Cnsubに近い色の画素の第2の集合Ob2とを含んでいる。第1の集合Ob1には、写真撮影時に光線が反射して光った部分(いわゆるハイライト領域)の色が存在する。例えば、図1(A)のカラー原稿において、黄色い服地の光った部分などがこのハイライト領域に対応している。上述の実施例によれば、しきい値を図中のTaに設定することによって、ハイライト領域を含む第1の集合Ob1を含み、第2の集合Ob2を除外するような2値マスクを得ることができる。第1の集合Ob1内のハイライト領域と第2の集合Ob2とは、どちらもB成分が大きいので、RGB空間における色ベクトルを使用する従来の方法では、このハイライト領域と第2の集合Ob2とを分離することは不可能である。これに対して、この実施例による方法では、対象色に近いハイライト領域を、第2の集合Ob2から容易に分離することができる。
【0059】なお、図1(A)のカラー画像において、服地の色である黄色を対象色Csubとして指定し、モデルの肌色を対象外色Cnsubとして指定すれば、服地の黄色部分を示す図1(B)のマスクを得ることができる。なお、図4に示すマンセルの色相環からも解るように、緑色は対象色から見て対象外色とは反対側の色相である。従って、対象色Csub を黄色と指定し、対象外色Cnsubを肌色と指定すると、緑色の葉の部分もマスク領域に含まれることになる。すなわち、図1(B)に示すように、黄色と緑色の部分をマスク領域とする2値マスクを得ることができる。
【0060】以上のように、この実施例では、対象色Csub と対象外色Cnsubとを指定することによって、対象色Csub に近い色部分を含み、かつ、対象外色Cnsubに近い色を含まないマスクを容易に得ることができる。
【0061】なお、この発明は上記実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【0062】(1)上記実施例では、色空間としてRGB座標系を用いたが、CIE−XYZ座標系,YMC座標系,YUV座標系などの他の色空間を用いてもよい。
【0063】(2)前述の数式3または4で得られた第1の係数k1またはku1をそのまま多階調マスクデータとして使用し、多階調マスクデータが正の画素については2値マスクの値を1とし、負の画素については2値マスクの値を0としてもよい。すなわち、しきい値として0を用いても良い。特に、カラー画像の色を変更するための2値マスクを作成する場合には、このような方法によっても良好なマスクを得ることができる。
【0064】(3)第1ないし第3の色ベクトルは、単位ベクトルでなくてもよい。ただし、第1ないし第3の色ベクトルを単位ベクトルとすれば、各色ベクトルが色相のみを表わすベクトルになる。従って、上述のように第1の係数に応じてマスクを作成すれば、カラー画像の各画素の色相に応じてマスク領域を決定することが可能である。
【0065】
【発明の効果】以上説明したように、請求項1に記載した発明によれば、対象色と対象外色の色相が近い場合にも、対象色に近い色部分をマスク領域とし、対象外色に近い色部分をマスク領域から除外することができる。
【0066】請求項2に記載した発明によれば、マスク領域のみを示す2値のマスクデータを容易に作成することができる。
【0067】請求項3に記載した発明によれば、ヒストグラムに応じて2値化のしきい値を自動的に決定することができる。
【0068】請求項4に記載した発明によれば、第3の色ベクトルを容易に決定することができる。
【0069】請求項5に記載した発明によれば、第1と第2の色ベクトルとは独立な第3の色ベクトルを容易に決定することができる。また、第1ないし第3の色ベクトルはそれぞれ現実の色を表わすことになるので、各画素の色に対する第1の係数を、対象色の成分を実際に表わす指標とすることができる。
【0070】請求項6に記載した発明によれば、第1ないし第3の色ベクトルが色相のみを表わすベクトルになるので、カラー画像の各画像の色相に応じてマスクを作成することができる。
【図面の簡単な説明】
【図1】カラー写真原稿とそのマスクを示す説明図。
【図2】この発明の一実施例を適用して切抜きマスクを作成するマスク作成システムの構成を示すブロック図。
【図3】実施例における切抜きマスクの作成の全体手順を示すフローチャート。
【図4】マンセルの色相環上における対象色(黄色)と対象外色(肌色)の位置を示す説明図。
【図5】ステップS4の詳細手順を示すフローチャート。
【図6】第1と第2の色ベクトルV1,V2を示すグラフ。
【図7】第1ないし第3の色ベクトルV1,V2,V3とRGB空間の関係を示す説明図。
【図8】HSV空間を示す説明図。
【図9】白色の単位ベクトルVWH以外のベクトルを第3の色ベクトルV3として設定する方法を示す説明図。
【図10】多階調マスクの作成手順を示すフローチャート。
【図11】2値マスクの作成手順を示すフローチャート。
【図12】多階調マスクデータのヒストグラム。
【図13】多階調マスクデータのヒストグラム。
【図14】2値マスクで切り抜かれる色の領域を示すグラフ。
【図15】実施例によって作成されたマスクの効果を示す説明図。
【符号の説明】
20…CPU
22…元画像メモリ
24…ベクトル値メモリ
26…マトリクスメモリ
28…多階調マスクメモリ
32…キーボード
34…マウス
36…読取スキャナ
38…カラーCRT
40…ハードディスク装置
50…マトリクス演算部
52…多階調マスク演算部
Cnsub…対象外色
Csub …対象色
【特許請求の範囲】
【請求項1】 カラー画像内の所望の色部分を示すマスクを作成する方法であって、前記カラー画像内において前記マスクの対象色を指定する工程と、前記カラー画像内において前記マスクの対象外色を指定する工程と、所定の色空間における前記対象色の第1の色ベクトルを求める工程と、前記所定の色空間における前記対象外色の第2の色ベクトルを求める工程と、前記第1と第2の色ベクトルとは独立の第3の色ベクトルを求める工程と、前記カラー画像内の各画素の色を、前記第1ないし第3の色ベクトルの線形結合で表わすときの前記第1ないし第3の色ベクトルに対する第1ないし第3の係数をそれぞれ求める工程と、前記カラー画像内の各画素における前記第1の係数の値に応じて前記マスクを作成する工程と、を備えることを特徴とするカラー画像のマスク作成方法。
【請求項2】 請求項1記載の方法であって、前記マスク作成工程は、前記第1の係数をしきい値で2値化することによって、前記マスクを表わすマスクデータを作成する工程を含む、カラー画像のマスク作成方法。
【請求項3】 請求項2記載のカラー画像のマスク作成方法であって、前記第1の係数を2値化する工程は、前記第1の係数の出現頻度を示すヒストグラムを作成する工程と、前記ヒストグラムの極小値における前記第1の係数を前記しきい値として設定する工程と、を備える、カラー画像のマスク作成方法。
【請求項4】 請求項1ないし3のいずれかに記載のカラー画像のマスク作成方法であって、前記第3の色ベクトルは白色を表わすベクトルである、カラー画像のマスク作成方法。
【請求項5】 請求項1ないし3のいずれかに記載のカラー画像のマスク作成方法であって、前記第3の色ベクトルを求める工程は、前記第1と第2の色ベクトルを、色相/彩度/明度空間における第4および第5の色ベクトルにそれぞれ変換する工程と、前記第4と第5の色ベクトルの少なくとも一方の彩度成分が所定の値を超える場合には、前記所定の色空間において白色を表わすベクトルを前記第3の色ベクトルとして選択し、前記第4と第5の色ベクトルの少なくとも一方の彩度成分が前記所定の値未満の場合には、前記第4と第5の色ベクトルのうちで彩度成分のより大きな色ベクトルについて前記色相/彩度/明度空間において色相を所定の角度回転した第6の色ベクトルを生成し、前記第6の色ベクトルを前記所定の色空間のベクトルに変換することによって前記第3の色ベクトルを生成する工程と、を備える、カラー画像のマスク作成方法。
【請求項6】 請求項1ないし5のいずれかに記載のカラー画像のマスク作成方法であって、前記第1ないし第3の色ベクトルは単位ベクトルである、カラー画像のマスク作成方法。
【請求項1】 カラー画像内の所望の色部分を示すマスクを作成する方法であって、前記カラー画像内において前記マスクの対象色を指定する工程と、前記カラー画像内において前記マスクの対象外色を指定する工程と、所定の色空間における前記対象色の第1の色ベクトルを求める工程と、前記所定の色空間における前記対象外色の第2の色ベクトルを求める工程と、前記第1と第2の色ベクトルとは独立の第3の色ベクトルを求める工程と、前記カラー画像内の各画素の色を、前記第1ないし第3の色ベクトルの線形結合で表わすときの前記第1ないし第3の色ベクトルに対する第1ないし第3の係数をそれぞれ求める工程と、前記カラー画像内の各画素における前記第1の係数の値に応じて前記マスクを作成する工程と、を備えることを特徴とするカラー画像のマスク作成方法。
【請求項2】 請求項1記載の方法であって、前記マスク作成工程は、前記第1の係数をしきい値で2値化することによって、前記マスクを表わすマスクデータを作成する工程を含む、カラー画像のマスク作成方法。
【請求項3】 請求項2記載のカラー画像のマスク作成方法であって、前記第1の係数を2値化する工程は、前記第1の係数の出現頻度を示すヒストグラムを作成する工程と、前記ヒストグラムの極小値における前記第1の係数を前記しきい値として設定する工程と、を備える、カラー画像のマスク作成方法。
【請求項4】 請求項1ないし3のいずれかに記載のカラー画像のマスク作成方法であって、前記第3の色ベクトルは白色を表わすベクトルである、カラー画像のマスク作成方法。
【請求項5】 請求項1ないし3のいずれかに記載のカラー画像のマスク作成方法であって、前記第3の色ベクトルを求める工程は、前記第1と第2の色ベクトルを、色相/彩度/明度空間における第4および第5の色ベクトルにそれぞれ変換する工程と、前記第4と第5の色ベクトルの少なくとも一方の彩度成分が所定の値を超える場合には、前記所定の色空間において白色を表わすベクトルを前記第3の色ベクトルとして選択し、前記第4と第5の色ベクトルの少なくとも一方の彩度成分が前記所定の値未満の場合には、前記第4と第5の色ベクトルのうちで彩度成分のより大きな色ベクトルについて前記色相/彩度/明度空間において色相を所定の角度回転した第6の色ベクトルを生成し、前記第6の色ベクトルを前記所定の色空間のベクトルに変換することによって前記第3の色ベクトルを生成する工程と、を備える、カラー画像のマスク作成方法。
【請求項6】 請求項1ないし5のいずれかに記載のカラー画像のマスク作成方法であって、前記第1ないし第3の色ベクトルは単位ベクトルである、カラー画像のマスク作成方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図10】
【図9】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図10】
【図9】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開平8−7107
【公開日】平成8年(1996)1月12日
【国際特許分類】
【出願番号】特願平6−165920
【出願日】平成6年(1994)6月23日
【出願人】(000207551)大日本スクリーン製造株式会社 (2,640)
【公開日】平成8年(1996)1月12日
【国際特許分類】
【出願日】平成6年(1994)6月23日
【出願人】(000207551)大日本スクリーン製造株式会社 (2,640)
[ Back to top ]