以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
[第1の実施形態]
図1は、画像処理システムの構成を示すブロック図である。本実施形態における画像処理システムは、画像処理装置115とカメラ付携帯端末104とを含む。画像処理装置115は、印刷機能を有する装置であり、例えば、MFP(多機能型印刷装置)やSFP(単機能型印刷装置)である。カメラ付携帯端末104は、例えば、カメラ付携帯電話、カメラ付スマートフォンやタブレットPC、スマートグラスやスマートウォッチなどのウェアラブル端末である。
本実施形態では、画像処理装置115は、付加情報が多重化された印刷物112を印刷する。そして、カメラ付携帯端末104は、撮像センサ105(カメラ)により、印刷物112を撮像する。本実施形態では、画像処理装置115とカメラ付携帯端末104との間は、有線ネットワークや無線ネットワークで相互に通信可能であっても良いし、ネットワーク等を介して通信可能に接続されていなくても良い。
画像処理装置115は、付加情報を印刷物112に埋め込む付加情報多重化部102を含み、カメラ付携帯端末104は、多重化された付加情報を印刷物から読み取る付加情報分離部106を含む。付加情報多重化部102は、例えば、プリント部103(プリンタエンジン)へ出力すべき画像情報を作成するプリンタドライバソフトウエア、もしくは、アプリケーションソフトウエアとして実現される。また、複写機、ファクシミリ、プリンタ本体等にハードウエア及びソフトウエアとして内蔵される形態で実現されても良い。付加情報多重化部102とプリント部103は別のデバイスに搭載されていても良い。例えば、スマートフォンのアプリケーションに付加情報多重化部が実装されており、出力である多重化画像を別デバイスであるプリンタへ送り、該プリンタで印刷を行っても良い。付加情報多重化部102とプリント部103は別のデバイスで実現される場合、プリント部103は、例えば、インクジェットプリンタ、レーザプリンタ等のプリンタである。他の例として、デジタルスチールカメラで撮影した画像を、無線ネットワークを介してスマートフォンやPCなどの別デバイスへ送る。スマートフォンやPC内に付加情報多重化部を備えておき、該画像を多重化しても良い。また、付加情報分離部106は、例えば、デジタルスチールカメラで撮影した画像から付加情報を分離する内部のアプリケーションソフトウエアやハードウエアで実現されても良い。
[付加情報の埋込みのための構成]
入力端子100からは、多階調の画像情報が入力され、入力端子101からは、画像情報の中に埋め込むべき必要な付加情報が入力される。この付加情報は、入力端子100に入力される画像情報とは別の情報、例えば音声情報や動画情報、テキスト文書情報、3Dオブジェクトデータなどが挙げられる。また、付加情報は、入力端子100に入力される画像に関する特徴量情報、著作権、撮影日時、撮影場所、撮影者等の諸情報、全く別の画像情報等であっても良い。加えて、上述の情報が格納されているURLなど、例えばサーバのアドレス情報であっても良い。
本実施形態では、入力端子100に入力される画像情報の画像の特徴量情報および該画像の関連動画が存在するURLが、埋め込むべき付加情報として入力端子101に入力される。画像の特徴量情報とは、前述したように、カメラ付携帯端末104のカメラで撮像した画像内に特定画像が存在するか否か、また、存在する場合には、その位置や角度、大きさなどをリアルタイムで特定するための情報である。例えば、該画像のエッジやエッジのコーナー情報、ベクトル、色、形などが挙げられ、公知の局所特徴量の検出方法などを用いて得ることができる情報である。
付加情報多重化部102は、視覚的に判別しづらいように、画像情報中に付加情報を埋め込む(多重化する)。付加情報多重化部102は、付加情報の多重化とともに、入力した多階調の画像情報の量子化も行う。つまり、付加情報多重化部102は、画像に画像の特徴量(特定画像が存在するか否か、また、存在する場合には、特定画像の位置や角度、大きさなどをリアルタイムで特定するための情報)を画像に付加情報として多重化する。なお、付加情報多重化部102は、特徴量を取得可能な情報(URL)を画像に付加情報として多重化しても良い。
プリント部103は、付加情報多重化部102で作成された情報を記録媒体に印刷するプリンタエンジンである。つまり、プリンタ部は、付加情報が多重化された画像を記録媒体に記録する。
図23(a)は、画像処理装置115のブロック構成を示す図である。CPU211は、画像処理装置115の内部を統括的に制御するプロセッサである。図1の付加情報多重化部102は、例えば、CPU211により実現される。ROM212やHDD2301は、画像処理装置115の基本プログラムや制御プログラム、各種アプリケーションやデータ等を記憶する。例えば、CPU211は、ROM212に記憶されたプログラムをRAM213に読み出して実行することにより、各実施形態の動作を実現する。RAM213は、CPU211のワーキングメモリとしても用いられる。
ネットワークインタフェース(NW I/F)2302は、例えば、有線や無線等、ネットワークの形態に応じた構成を有する。また、通信範囲が異なる複数種類の無線ネットワークにも対応可能であり、例えば、通信距離が数cmといった近距離無線通信(NFC:Near Field Communication)により、カメラ付携帯端末104と通信することも可能である。
ディスプレイ114は、ユーザに各設定画面やプレビュー画面等を表示する。操作部2303は、例えば、キーボードやタッチパネル等を有し、ユーザからの操作指示を受付可能である。
デバイスI/F2304は、プリント部2305(プリントエンジン)やスキャン部2306と、システムバス2308とを接続する。図1では、プリント部2305が示されているが、画像処理装置115の実行可能な機能に応じて、FAX等、他のブロックがデバイスI/F2304に接続されても良い。
画像処理部2307は、外部やスキャン部2306等から取得したデータに対して、用途に応じた画像処理を実行する。例えば、画像処理部2307は、プリント部2305の記録方式に応じた色空間変換や二値化処理、画像の拡大/縮小/回転、といった処理を実行する。
図1に示す各ブロックは、システムバス2308を介して相互に通信可能に接続される。図1に示す構成以外の構成であっても良く、例えば、システムバス2308とイメージデータバスとがバスブリッジを介して接続される。その場合には、例えば、デバイスI/F2304がイメージデータバスに接続される。
図1の入力端子100は、例えば、ネットワークI/F2302から入力される構成を示し、また、入力端子101は、例えば、ネットワークI/F2302や操作部2303から入力される構成を示す。
[付加情報の読取りのための構成]
図1のカメラ付携帯端末104上で実行される読取アプリケーションは、撮像センサ105を用いて読み取られた印刷物112上の情報を取得する。読取アプリケーションは、付加情報分離部106を用いて分離された印刷物112中に埋め込まれた付加情報を出力端子107に出力する。この出力端子107は、取得した付加情報を出力するインタフェースであり、例えば音声情報は、カメラ付携帯端末104のスピーカ108へ出力され、画像情報は、ディスプレイ109へ出力される。また、外部デバイスへデータを出力するインタフェースに、付加情報が出力されても良い。また、カメラ付携帯端末104に複数の撮像センサがある場合、印刷物112の撮影は、第二撮像センサ111により行われても良い。本実施形態では、付加情報分離部106により、印刷物112に埋め込まれた、入力端子100に入力された画像の特徴量情報および該画像の関連動画が存在するURLの情報、が取得される。
図23(b)は、カメラ付携帯端末104のブロック構成を示す図である。カメラ付携帯端末104は、CPUやROMやRAMといった、汎用的な情報処理装置の構成を含む。CPU2310は、カメラ付携帯端末104の内部を統括的に制御するプロセッサである。図1の付加情報分離部106は、例えば、CPU2310により実現される。ROM2311は、カメラ付携帯端末104の基本プログラムや制御プログラム、各種アプリケーションやデータ等を記憶する。例えば、CPU2310は、ROM2311に記憶されたプログラムをRAM2312に読み出して実行することにより、各実施形態の動作を実現する。RAM2312は、CPU2310のワーキングメモリとしても用いられる。
ネットワーク通信部113は、例えば、有線や無線等、ネットワークの形態に応じた構成を有する。また、通信範囲が異なる複数種類の無線ネットワークにも対応可能であり、例えば、通信距離が数cmといった近距離無線通信(NFC:Near Field Communication)により、画像処理装置115と通信することも可能である。
ディスプレイ109は、ユーザに各設定画面やプレビュー画面等を表示する。操作部2313は、例えば、タッチセンサーやハードキー等を有し、ユーザからの操作指示を受付可能である。加速度センサ110は、カメラ付携帯端末104の姿勢を検出する。図23(b)に示す各ブロックは、システムバス2314を介して相互に通信可能に接続されている。
[印刷物の生成処理]
次に、情報多重化された印刷物の生成の詳細について説明する。
図18は、本実施形態において付加情報が埋め込まれた印刷物の生成処理を示すフローチャートである。ここでは、印刷された写真などの画像に対してAR技術を用いた特殊効果画像処理が行われることを目的としている。ここで、特出効果画像処理とは、例えば、撮像された静止画像データに対して動画像データを合成して画像に動画効果を与えることである。なお、撮像することで得られたデータを、単に撮像データと呼ぶこともある。また、例えば、撮像された静止画像データに対して3Dオブジェクトデータを合成して画像に3D効果を与えることである。3Dオブジェクトデータについては、第2の実施形態において説明する。図18の処理は、例えば、画像処理装置115のCPU211がROM212に記憶されているプログラムをRAM213に読み出して実行することにより実現される。
S1801では、画像処理装置115の情報多重化印刷アプリケーション(以下、印刷アプリケーション)がユーザ指示により起動する。なお、本実施形態では、付加情報多重化部102、プリント部103、ディスプレイ114が一体化された画像処理装置115を用いて説明をしているため、印刷アプリケーションも画像処理装置115にて動作する。一方、上述したように、例えば、スマートフォンが付加情報多重化部102を備え、プリンタがプリント部103を備える形態も考えられる。この場合、図18の処理はスマートフォン(携帯端末)により実行される処理となる。S1802では、印刷アプリケーションは、印刷対象となる動画像の選択を受け付ける。例えば、ユーザは、ポインティングデバイスやキーボードの入力装置、あるいは、タッチディスプレイ上でのタッチ操作により対象となる動画像を選択する。動画像の選択においては、例えば、端末内に保存している動画像ファイルがプレビュー表示され、ユーザによる選択が行われる。尚、動画像は、ネットワーク上の動画像やメモリカードなど、ストレージ内に保存している動画像であっても良い。
S1803では、印刷アプリケーションは、S1802で選択された動画像中の任意のフレームを1つ選択する。フレームの選択においては、例えば、動画像を再生し、一時停止やコマ送り、スライドバーによる再生フレームの選択など、ユーザがフレームを見ながら選択することで実現される。他に、アプリケーションが一意に先頭フレームを選択しても良いし、動画像を解析し、公知の顔検出、表情評価、ブレ・ボケ評価、構図評価などの技術から配点し、最適なフレームが選択される方法によって行われても良い。
S1804では、印刷アプリケーションは、S1803で選択されたフレームの切出しを行う。切出しとは、フレームを1枚の静止画として取得することである。例えば、アプリケーションは、動画像のWidth×Height[Pixel]分のメモリを確保し、そのメモリに前述のフレームのRGB値を書き込む。メモリは、Width×Height×3[Byte]の容量を含む。ここで、3Byteとは、RGBの各要素に対応し、Rで8[bit](1[Byte])、Gで8[bit]、Bで8[bit]が必要であることを意味する。このようにして、8[bit]×3の24[bit]のビットマップ画像が完成する。以下、これを切り出されたフレーム(あるいは画像)と呼ぶ。そして、本実施形態では、この切り出された画像が図1に示す入力端子100に入力される画像情報となり、印刷物112についての可視情報となる。本実施形態では、ビットマップ画像は、sRGB色空間の画像とする。そのため、動画像の色空間がsRGBでない場合には、公知の色空間変換技術を用いてsRGBへの変換が行われる。また、他にプリンタが対応している色空間がある場合には、その色空間への変換が行われても良い。
S1805では、印刷アプリケーションは、動画像ファイルのサーバへの登録を行う。印刷アプリケーションは、外部のサーバとの間で通信を行い、S1802で選択された動画像に対応する動画像ファイルをアップロードする。ここで、サーバとは、カメラ付携帯端末104の読取アプリケーションがアクセスし、動画像ファイルをダウンロード可能なサーバである。サーバは、情報多重化印刷用および読み取りの専用サーバでも良いし、任意の動画共有サービスを行っているサイトのサーバでも良い。但し、任意の動画共有サービスを使用する場合、その動画像を公開したくない場合、視聴の制限ができないサービスはサービス候補から除外する必要がある。本実施形態では、上記の専用サーバを用いた構成として説明する。
専用サーバは、アップロードされた動画像ファイルに一意のID(識別情報)を付けて識別可能に管理する。サーバは、そのID、あるいは、そのIDから作成した暗号をクライアント側である画像処理装置の印刷アプリケーションへと返す。暗号は、専用サーバ内でIDが割り出せる方式であれば良く、例えば、サーバ内で一意にランダムな文字の羅列(長文)を作成したものでも良い。サーバ内では、IDと長文とを対応したテーブルを持ち、テーブルを参照することにより長文からIDを検索可能である。長文にするのは、できるだけ長い文字の羅列である方がハッキングなどの攻撃に強いためである。尚、この長文自身をIDとしても良く、本実施形態では、長文自身をIDであるとして説明する。また、印刷物に情報多重化で埋込み可能な容量から、文字の長さを決定し、クライアントである画像処理装置の印刷アプリケーションがサーバへ通知することで、サーバは最大限に長い文字列を発行することが可能となる。
S1806では、印刷アプリケーションは、特徴量の作成を行う。画像の特徴量情報とは、前述したように、カメラ付携帯端末104のカメラで撮像した画像内に特定画像が存在するか否か、また、存在する場合にはその位置や角度、大きさなどをリアルタイムで特定するための情報である。例えば、画像のエッジやエッジのコーナー情報、ベクトル、色、形などが挙げられ、公知の局所特徴量の検出方法などを用いて得ることができる情報である。ここでは、S1804で動画像から切り出された画像に対して局所特徴量を算出し、これが特徴量情報とされる。特徴量は、数値や文字のテキスト情報でも良いし、数値のバイナリでもよい。また、ベクトルや座標などでも良い。また、圧縮されるようにしても良い。これにより、多重化で埋め込む容量を低減することができる。
なお、後で、切り出された画像は印刷され、印刷物112が作成される。後述するカメラ付携帯端末104の読取アプリケーションは、その印刷物112をカメラで撮像し、撮像映像にS1804で動画から切り出された画像があるかを、特徴量を用いて探索する。
ここで、印刷とカメラ撮像との間では、切り出された画像の色味、濃淡、解像度などが、切り出された状態から変化している可能性がある。例えば、プリンタやカメラでは、出力結果の見栄えが良くなるよう、彩度やコントラストを強調する機器が一般的に普及している。また、プリンタによっては、CMYKなどの色材の構成ではsRGBなどの入力画像の色空間の再現ができない場合がある。その場合は、入力画像とは異なる色が出力されることになる。反対に、sRGBなどの入力画像の色空間より広い範囲の色を再現可能なプリンタであれば、入力画像の色空間を超えた色を出力する機種もある。カメラについても、光源や距離などの撮影条件で色や解像度が変化する。そのため、印刷やカメラ撮像における変化を考慮して、切り出された画像に解像度変換、輝度や色の補正などを行った画像に対して、特徴量算出を行うようにしても良い。これにより、所定の条件下で読取アプリケーションでの探索の精度を向上させることができる。
S1807では、印刷アプリケーションは、付加情報を入力する。本実施形態における付加情報は、S1806で算出した特徴量情報、および、S1805でアップロードされた動画像ファイルに付加されたIDである。前述したように、上記の専用サーバがIDを発行する。専用サーバを用いて本実施形態を実現する場合、読み取りアプリケーションが専用サーバへのアクセス情報を保持しておけば良い。そのため、該サーバのURLやIPアドレスを多重化情報として埋め込まなくても良い。このように専用サーバを用いれば、多重化情報として埋め込む容量を減らす事が可能である。S1805で動画共有サービスのサーバへ動画像ファイルをアップロードする構成の場合には、カメラ付携帯端末104の読取アプリケーションが動画像ファイルをダウンロードやストリーミングによって再生できる情報が付加情報となる。その情報とは、例えば、サイトのユーザ名やパスワードなどのログイン情報、動画像ファイルのURLやIDである。従って、これらの情報が付加情報として、図1の入力端子101を介して付加情報多重化部102へ入力される。
又は、これらの情報を他の管理サーバに記憶しておき、そのサーバがIDで情報を管理するようにしても良い。読取アプリケーションが、上記の管理サーバにアクセスしてIDを送信すると、管理サーバは、前述のログイン情報やURLなどを返す構成とする。これにより、管理サーバはログイン情報やURLなど、動画像ファイルに比べて容量の少ない文字情報のみ管理すれば良く、ストレージ容量や通信回線の能力などを抑えることができる。この場合、上記の管理サーバで記憶されるIDが付加情報に含まれる。
S1808では、印刷アプリケーションは、付加情報多重化を行う。図1の付加情報多重化部102は、前述の画像情報と付加情報とを用いて多重化画像を作成する。本実施形態において、多重化画像は、多重化処理および誤差拡散による特有のハーフトーン後の画像である。多重化情報の埋め込み方法についての詳細は後述する。
尚、本実施形態では、誤差拡散で多重化情報を埋め込む。しかし、RGBなどの多値画像をL*a*b*やYCCなどの色空間に変換し、画素毎に各要素(L*a*b*色空間ならL*やa*やb*など)への加算、減算を行うことで多重化を行うようにしても良い。この場合、加算、減算を行った画像を、プリンタが入力として対応する色空間へと変換し、通常の色補正、色分解、ガンマ補正、ハーフトーンなどを行い、印刷すれば良い。プリンタが入力として対応する色空間とは、例えばsRGB色空間やCMYK色空間などである。また、RGB画像の各要素(R、G、B)に対して加算、減算を行っても良い。
読み取りの際、上述したL*a*b*やYCCなど、変換した色空間と同じ色空間に変換して解析する事により、多重化情報を読み出すことができる。このように、多重化により情報を埋め込まれた印刷物は、人間の目には情報を埋め込まれていない通常の印刷物のように見える。その理由を説明する。ハーフトーンや画像データの画素の単位、あるいはそれに近い周波数に信号が埋め込まれる。通常の観察距離においてその周波数は人間の目には感知しにくい周波数であるため、認識し難い。そのため、本実施形態では、この多重化情報や信号を、不可視情報と呼ぶ。反対に、バーコードやQRコードなどの2次元コード、人間が見て信号(データ)がある事が認識しやすい情報を可視情報と呼ぶ。
尚、不可視情報を画像に埋め込む別の方法として、特殊な色材を用いてバーコードや2次元コード等を印刷し、印刷物に紫外線などの特殊な光線を当てた場合に読み取り可能となる仕組みを用いても良い。また、不可視光線を返す色材で上記同様にコード等を印刷し、不可視光線を感知可能なカメラを用いて読み取りを行っても良い。
S1809では、印刷アプリケーションは、印刷を行う。具体的には、印刷アプリケーションは、S1808で作成された多重化画像をプリント部103へ送信することで、印刷が行われる。その結果、印刷用紙(記録媒体)に情報多重化された画像が印刷された印刷物112が出力される。即ち、印刷物112は、可視情報である画像と、不可視情報である付加情報の両方を含む記録媒体であるといえる。なお、印刷アプリケーションがスマートフォン等で実施される形態の場合、S1809の処理は、印刷アプリケーションの指示に従い、スマートフォンからプリンタへ印刷データを送信する処理に相当する。
[印刷物の読取処理]
図19は、S1809で出力された情報多重化された印刷物112を読み取るアプリケーションの処理を示すフローチャートである。図19の処理は、例えば、カメラ付携帯端末104のCPU2310がROM2311に記憶されているプログラムをRAM2312に読み出して実行することにより実現される。
S1901では、情報多重化読取アプリケーション(以下、読取アプリケーション)が、ユーザ指示により起動する。なお、読取アプリケーションは、カメラ付携帯端末において動作する。
S1902では、読取アプリケーションが、カメラ付携帯端末104に搭載されたカメラに撮像を指示する。読取アプリケーションは、カメラ付携帯端末104のカメラ機能により撮像されている映像をディスプレイ109に表示する。ユーザは、カメラがどこを映しているのかをディスプレイ109で確認しながら、印刷物112を撮像する。ここでは、ディスプレイ109内に、撮像対象の印刷物112が含まれるように撮像されるものとする。この間、撮像センサ105は、1秒間に30回などの単位で、撮像された画像を取得し続ける。この撮像は、読取アプリケーションの終了まで繰り返し続けられる。
尚、必ずしも取得した画像の全てが、後続するS1903で使用されなくても良い。例えば、1秒に1回など予め定められた間隔で取得された画像を使用するようにしても良いし、カメラ付携帯端末104の性能や状態に応じてその間隔が変更されても良い。性能とは、CPUやGPUの処理速度、メモリ容量、メモリ転送の速度、カメラの感度や画素数、カメラモジュールの処理速度、あるいはOSによる機能制限などが挙げられる。状態とは、バッテリー残量や充電中か否か、他のアプリプロセスやOSなどの影響、使用出来るCPUコア数やメモリ量、GPUコア数などが挙げられる。また、画像のブレやボケの評価機能を用いて、例えば1秒間などの一定時間の内、評価値が高い画像を使用するなどしても良い。本実施形態では、取得した画像は、RGBそれぞれ8[bit]の24[bit]画像とする。
S1903では、読取アプリケーションは、多重化された付加情報の取出しを行う。付加情報分離部106は、S1902で撮像センサ105から取得した画像から付加情報を分離し、付加情報を取り出す。ここで、付加情報は、S1807で入力され、S1808で多重化された特徴量情報およびIDである。また、任意の動画共有サービスのサーバへ動画像ファイルをアップロードする構成の場合は、対象動画像ファイルにアクセスして再生できる情報が付加情報となっている。付加情報の分離についての詳細は後述する。付加情報の取出しができるまで、S1902でのカメラでの撮像とS1903での付加情報の取出しとが繰り返し行われる。付加情報の取出しが完了すると、読取アプリケーションは、ディスプレイ109への表示やスピーカ108から音を発するなどして、読取りに成功したことをユーザがわかるように通知する。
S1904では、読取アプリケーションは、動画像の取得を行う(データ取得動作)。読取アプリケーションは、外部のネットワークを介して、S1805で動画像ファイルがアップロードにより登録された専用サーバにアクセスする。そして、専用サーバに、S1903で取り出した付加情報に含まれるIDを送信する。専用サーバは、IDを受け取ると、IDで識別される動画像ファイルを、読取アプリケーションからダウンロード可能な状態になるよう処理する。例えば、専用サーバは、一定時間のみ使用可能なURLを発行し、そのURLをカメラ付携帯端末104の読取アプリケーションに送信する。ここで、そのURLの宛先は、本対象の動画像ファイルである。使用時間を一定時間にするのは、第三者のハッキングによる動画像ファイルへの不適切なアクセスを防ぐためである。
任意の動画共有サービスのサーバへ動画像ファイルをアップロードする構成の場合は、読取アプリケーションは、付加情報から取り出したURLやログイン情報などを用いて、対象動画ファイルにアクセスする。
このようにして、読取アプリケーションは、動画像ファイルのダウンロードやストリーミングにより、動画像の再生を開始可能な状態とする。後述する動画像の再生は、読取アプリケーションがカメラ付携帯端末104のOSの機能を用いるか、読取アプリケーション自身が搭載する公知のコーデックを用いることで実行される。
S1905では、読取アプリケーションは、S1902により撮像されている映像の特徴量を算出する。読取アプリケーションは、S1902から繰り返し行われているカメラでの撮像操作により、RGB画像を逐次取得する。読取アプリケーションは、取得したRGB画像に対してS1806での特徴量作成と同じ処理を実行し、S1902により撮像されている映像に関するRGB画像の特徴量を作成する。
S1906では、読取アプリケーションは、特徴量の比較を行う。読取アプリケーションは、S1903で付加情報として取り出した特徴量情報と、S1905で作成した撮像画像の特徴量とを比較し、撮像画像内に印刷物に印刷された対象の画像が存在するか否かを判定する。これをマッチングと呼ぶ。また、S1906では、対象の画像が存在する場合、撮像画像内の座標位置、角度、大きさが取得される。これは、三次元空間上の位置や角度などの状態を取得する事になる。特徴量の比較の結果、撮像画像内に対象の印刷物が存在しないと判定された場合、読取アプリケーションの処理はS1905に戻り、新たにRGB画像を取得し、そのRGB画像の特徴量を作成する。一方、撮像画像内に対象の印刷物が存在すると判定された場合、読取アプリケーションの処理はS1907へ進む。
S1907では、読取アプリケーションは、フレームへの合成を行う。読取アプリケーションは、S1904で再生が開始可能な状態の動画像ファイルに基づいて動画像の再生を開始する。その際、読取アプリケーションは、動画像のフレームを取得し、S1906で取得した角度、大きさに応じて、動画像のフレームを変形する。そして、S1906で取得したRGB画像上のフレームに載せるように上書き合成する。この時、合成する位置は、1906で取得した座標位置である。そして、読取アプリケーションは、S1907で得られた合成画像を、ディスプレイ109に描画する。
S1908では、読取アプリケーションは、動画像の再生が終了したか否かを判定する。動画像の再生が終了していないと判定された場合、S1905からの処理を繰り返す。2回目以降のS1907では、前回再生した動画像のフレームに後続するフレームを取得して処理を行う。
以上により、ユーザはディスプレイ109を見ると、あたかも印刷物上の画像が動いているように見えるという体験ができる。その結果例を図16に表している。図16Aにおいて、ユーザはスマートフォン1602のカメラ機能を使い、印刷物1601を含むように撮像する。すると、ディスプレイ1603には印刷物1601の切り出し元の動画が領域1604に再生され、あたかも印刷物1601の画像が動いているかのように見える。
また、図16Bは印刷物1601を図16Aよりも下の位置から撮像した場合を示している。下側から撮像しているため、ディスプレイ1603には印刷物1601は1606のように変形して見える。この際、1606には動画の各フレームを同じ形、大きさに変形し、向きも合わせて合成して再生される。そのため、スマートフォンや印刷物の位置を変えると、それに合わせて動画再生領域1606も変化するため、ユーザはより印刷物上の画像が動いているかのように感じる。
尚、後続のフレーム再生までの時間に、S1905からS1908までの処理が間に合わなければ、数フレームをスキップし、間隔を空けて再生しても良い。これにより、性能が低いカメラ付き形態端末においても上記体験を実現することが可能となる。
本実施形態では、画像の特徴量が多重化情報として印刷物そのものに埋め込まれるので、画像の印刷物を撮像する場合、類似画像による誤作動が生じにくいという効果がある。
また、本実施形態では、画像の特徴量を取り出せるような情報を多重化情報として印刷物に埋め込むため、アプリケーションが予め画像の特徴量を持つ必要がない。そのため、少数の画像のための専用アプリケーションにならず、不特定多数の画像に汎用的に使える印刷アプリケーションおよび読取アプリケーションを提供することが可能となる。加えて、多重化情報を読み取る事で再生するコンテンツが決まるため、どのような特徴量を使用するか、ユーザに選ばせる必要もない。そのため操作性が向上する。
上記では、ディスプレイ109内に印刷物112を含むように撮像されるものとして説明した。しかしながら、図14に示すように、印刷物112がディスプレイ109内に収まらないサイズである場合もある。
図15は、印刷物112がディスプレイ109内に収まらないサイズである場合の処理を示すフローチャートである。図15の処理は、例えば、カメラ付携帯端末104のCPU2310がROM2311に記憶されているプログラムをRAM2312に読み出して実行することにより実現される。
S1501では、図14に示すように、ユーザは、カメラ付携帯端末104を印刷物112上で所定方向に移動させながら、ショット間で映像が重複するように複数回ショットを繰り返す。ユーザは、さらに、上記操作を所定方向と交差する方向に複数回、繰り返す。その結果、読取アプリケーションは、印刷物112を構成する複数の画像を取得する。
S1502では、読取アプリケーションは、S1501で取得された複数の画像を合成およびディスプレイ109の表示領域に応じた縮小処理を行う。合成においては、複数のショット間の重複部分の画像に基づいて合成が行われる。S1503では、S1903と同様の付加情報の取出しが行われ、S1504では、S1904〜S1908と同様の動画(コンテンツ)の再生が行われる。
[付加情報の埋込み処理]
次に、多重化情報として印刷物に付加情報を埋め込む処理を説明する。尚、下記は本実施形態の一例であり、情報を埋め込む方法は以下に説明する方法に限定されない。また、印刷を対象に説明を行うが、これに限らず、RGB画像データに多重化情報を埋め込み、ディスプレイ114に表示するなどの構成でも同様の効果が得られる。
図2は、図1の付加情報多重化部102の構成を示すブロック図である。誤差拡散処理部200は、入力端子100に入力された画像情報に誤差拡散法を用いた疑似階調処理を行うことによって、入力階調数よりも少ない量子化レベルに変換し、複数画素の量子化値により、面積的に階調性を表現する。誤差拡散処理についての詳細は後述する。
ブロック化部201は、入力端子100に入力された画像情報を所定領域(ブロック)単位に区分する。ブロック化部201により行われるブロック化は、矩形に区分されても良いし、矩形以外の領域に区分されても良い。
量子化条件制御部202は、ブロック化部201にてブロック化された領域単位で、量子化条件を変更するように制御する。また、量子化条件制御部202は、入力端子101に入力された付加情報に基づき、ブロック単位で量子化条件を変更する。制御部210は、CPU211、ROM212、RAM213を含む、例えばチップ等で構成した制御部である。CPU211は、ROM212に保持された制御プログラムに従って、上述した各構成の動作及び処理を制御する。
図3は、誤差拡散処理部200の構成を示すブロック図である。本実施形態では、量子化値が二値である誤差拡散処理を例にして説明する。加算器300は、入力端子101に入力された画像情報の注目画素値と、既に二値化された周辺画素の分配された量子化誤差とを加算する。比較部301は、量子化条件制御部202からの量子化閾値と、加算器300の加算結果とを比較し、所定の閾値よりも大きい場合には"1"を、それ以外は"0"を出力する。8ビットの精度で画素の階調を表現する場合、例えば、最大値である"255"と最小値である"0"が出力される。
ここで、量子化値が"1"の時に、記録媒体上にドット(インク、トナー等)が記録されると仮定する。減算器302は、量子化結果と上記の加算結果との誤差を算出し、誤差配分演算部303は、以降の量子化処理が施される周辺画素に誤差を配分する。誤差の配分割合は、注目画素との相対的な距離に基づいて設定された誤差の配分テーブル304に予め保持されており、誤差配分演算部303は、配分テーブル304に保持された配分割合に基づいて誤差を周辺画素に分配する。図3の配分テーブル304は、周囲4画素分の配分テーブルを示しているが、これに限られない。
次に、量子化条件制御部202を含む全体の処理について、図4のフローチャートを参照しながら説明する。量子化値は二値である例について説明する。図4の処理は、例えば、画像処理装置115のCPU211がROM212に記憶されているプログラムをRAM213に読み出して実行することにより実現される。
S401では、CPU211は、RAM213に確保された変数iを初期化する。ここで、変数iは、垂直方向のアドレスをカウントする変数である。S402では、CPU211は、RAM213に確保された変数jを初期化する。ここで、変数jは、水平方向のアドレスをカウントする変数である。続いて、S403では、CPU211は、現在の処理アドレスである座標(i,j)が多重化処理を実行すべき領域に属しているか否かを判定する。
図5を参照しながら、多重化領域について説明する。図5は、水平画素数がWIDTH、垂直画素数がHEIGHTから成る、一つの画像を示している。ここで、この画像中に付加情報を多重化するとする。画像の左上を原点として、横N画素、縦M画素でブロック化が行われる。本実施形態では、原点を基準点としてブロック化が行われるが、原点から離れた点を基準点として設定するようにしても良い。この画像中に最大限の情報を多重化するために、N×Mのブロックを基準点から配置していく。即ち、水平方向に配置可能なブロック数をW、垂直方向に配置可能なブロック数をHとすると、WとHは、式(1)及び(2)から算出される。
W = INT(WIDTH/N) ・・・(1)
H = INT(HEIGHT/M) ・・・(2)
但し、INT()は()内の整数部分を示す。
式(1)、式(2)において割り切れない剰余画素数が、N×Mのブロックを複数配置した時の端部に相当し、本実施形態では、その部分を符号多重化領域外とする。
図4のS403では、現在処理している注目画素が多重化領域内でない、即ち、多重化領域外であると判定された場合には、S404において、CPU211は、量子化条件Cを設定する。一方、多重化領域内であると判定された場合には、S405において、CPU211は、多重化すべき付加情報を読み込む。ここで、説明を容易にする為に、付加情報は、code[]という配列を用いて、各1ビットずつ表現されるものとする。例えば、付加情報を48ビット分の情報と仮定すると、配列code[]には、code[0]からcode[47]まで、各1ビットずつが格納されている。
S405において、CPU211は、RAM213に確保された変数bitに、式(3)のように、配列code[]内の情報を代入する。
bit = code[INT(i/M)×W+INT(j/N)]・・・(3)
S406では、CPU211は、代入された変数bitが"1"であるか否かを判定する。前述したように、配列code[]内の情報は各1ビットずつ格納されている為、変数bitの値も"0"か"1"かの何れかを示すことになる。
ここで、"0"であると判定された場合には、S407において、CPU211は、量子化条件Aを設定し、"1"であると判定された場合には、S408において、CPU211は、量子化条件Bを設定する。
次に、S409では、CPU211は、S404、S407、S408で設定された量子化条件に基づいて量子化処理を行う。この量子化処理は、図3で説明した誤差拡散法により行われる。
S410では、CPU211は、水平方向変数jをカウントアップして、S411において、画像の水平画素数であるWIDTH未満か否かを判定する。ここで、WIDTH未満であると判定された場合、S403からの処理を繰り返す。一方、WIDTH未満でないと判定された場合、即ち、水平方向の処理がWIDTH画素数分終了した場合、S412において、CPU211は、垂直方向変数iをカウントアップする。そして、S413において、CPU211は、画像の垂直画素数であるHEIGHT未満か否かを判定する。ここで、HEIGHT未満であると判定された場合、S402からの処理を繰り返す。一方、HEIGHT未満でないと判定された場合、即ち、垂直方向の処理がHEIGHT画素数分終了した場合、図4の処理を終了する。以上の処理により、N×M画素よりなるブロック単位で、量子化条件を変更する。
次に、量子化条件A、B、Cの例について説明する。誤差拡散法における量子化条件には様々な因子があるが、本実施形態において量子化条件の因子は、量子化閾値である。S404で設定される量子化条件Cは、多重化領域外で用いられる為に、量子化閾値はどのような条件でも良い。前述したように、1画素が8ビットによる階調表現で、量子化レベルが2値の場合には、最大値である"255"、及び、最小値である"0"が量子化代表値となるが、その中間値となる"128"が量子化閾値として設定されることが多い。よって、本実施形態では、量子化条件Cは、量子化閾値を"128"固定値とする条件とする。
S407で設定される量子化条件Aと、S408で設定される量子化条件Bは、多重化領域内のブロックで用いられる為、量子化条件の違いによる画質の違いを生じさせる必要がある。但し、画質の違いは視覚的には判別しにくいように表現し、かつ、紙上から容易に識別可能である必要がある。
図6(a)及び(b)は、量子化条件A、Bを説明するための図である。図6(a)は、量子化条件Aにおける量子化閾値の変化の周期を示す図である。図中、一つのマスを1画素分と想定し、白いマスは固定閾値、灰色のマスを変動閾値とする。即ち、図6(a)の例では、横8画素、縦4画素のマトリクスを組み、灰色のマスについてのみ突出した値を閾値として設定する。
図6(b)は、同様に、量子化条件Bにおける量子化閾値の変化の周期を示した図である。図6(b)の例では、図6(a)とは異なり、横4画素、縦8画素のマトリクスを組み、灰色のマスについてのみ突出した値を閾値として設定する。
前述したように1画素が8ビットの階調値の場合に、例えば、固定閾値として"128"、突出した閾値を"10"と設定する。量子化閾値が低くなると、注目画素の量子化値が"1"(量子化代表値"255")になりやすくなる。即ち、図6(a)、(b)ともに、図中の灰色のマスの並びで量子化値"1"が並びやすくなる。言い換えると、N×M画素のブロック毎に、図6(a)の灰色のマスの並びでドットが発生するブロックと、図6(b)の灰色のマスの並びでドットが発生するブロックとが混在することになる。
誤差拡散法における量子化閾値の多少の変更は、画質的には大きな影響を及ぼさない。組織的ディザ法においては、使用するディザパターンによって、階調表現の画質が大きく左右される。しかしながら、前述したような、規則的に量子化閾値の変化を与えた誤差拡散法では、あくまでも画質を決定する階調表現は誤差拡散法であるので、ドットの並びが多少変化したり、テクスチャの発生が変化したり等は、階調表現の画質には殆ど影響を与えない。量子化閾値が変化した場合でも、あくまでも信号値と量子化値との差分となる誤差は周囲画素に拡散されるので、入力された信号値は、マクロ的に保存される。即ち、誤差拡散法におけるドットの並び、テクスチャの発生に関しては、冗長性が極めて大きいといえる。
上記の説明のように、本実施形態では、誤差拡散法の量子化閾値に、符号を表す所定の周期性を重畳することにより、多重化を実現している。しかしながら、他の重畳方式により多重化を実現しても良い。例えば、直接RGBの値(輝度情報)に、周期性を重畳する方式により多重化を実現しても良い。または、RGBの値を、輝度−色差情報など、他の色空間情報(例えばCIE L*a*b、YCrCb信号)に分離して周期性を重畳する方式により多重化を実現しても良い。または、RGBの値をインク色(例えばCMYK信号)に分離して周期性を重畳する方式により多重化を実現しても良い。
入力された画像情報が白(8bitのRGB信号値で表すとR=255, G=255, B=255)や黒(0, 0, 0)、RED(255, 0, 0)、GREEN(0, 255, 0)、BLUE(0, 0, 255)など、色域の表面やそれに近い部分では、上記の方法で色材を加算あるいは減算が出来なかったり、効果が少ない場合がある。例えば、通常、印刷物で白を表す場合は用紙の白そのものを使い、色材を用いない。その場合、色材の減算はできない。こういった場合に備えて、多重化処理の前に予め画像の色域のダイナミックレンジを小さくする処理を入れても良い。ダイナミックレンジを小さくするとは、白(255, 255, 255)の色を少し暗く(例えば、250, 250, 250)、黒(0, 0, 0)を少し明るく(例えば、5,5,5)し、その間を例えば均等になるように調整するなどである。同様に、REDの彩度を少し下げる(250, 0, 0)などし、色域を少し小さくする。望ましくは、後述の読み取り処理を行う機器で差が判別でき、人間の目には色域が小さくなった影響が分かり難い程度が良い。このようにして色域に増減できる余裕をもたせることにより、色域の表面付近においても、色材の加算、減算が可能となる。
[付加情報の読取処理]
次に、図1の画像処理システムにおける付加情報分離部106の処理について説明する。図7は、付加情報分離部106の構成を示すブロック図である。説明を容易にする為に、前述の付加情報多重化部102の場合と同様、分割したブロック内に各1ビットずつの付加情報が多重化されている印刷物112から、付加情報を分離する例について説明する。当然のことながら、付加情報多重化部102における1ブロックあたりの付加情報量と、付加情報分離部106における1ブロックあたりの分離情報量とは等しくなる。
入力端子700には、カメラ付携帯端末104で読み込まれた画像情報が入力される。ここで、カメラ付携帯端末104の撮像センサ105の解像度(撮像解像度)は、印刷物112を作成する際の印刷解像度以上が好ましい。勿論のことながら、正確に印刷物112のドットの点在情報を読み込む為には、サンプリング定理により、撮像センサ105側は、プリンタ側よりも2倍以上の解像度が必要になる。しかしながら、同等以上であれば、正確でなくとも、ある程度ドットが点在しているのを判別することが可能である。本実施形態では、説明を容易にするためにプリンタ解像度と撮像センサ105の解像度とは同一解像度であるとする。
幾何学的ずれ検出部701は、カメラ付携帯端末104で撮影した画像の幾何学的ずれを検出する。入力端子700から送信される画像情報は、プリント部103による出力、カメラ付携帯端末104による撮影を経ている為に、プリンタ出力以前の画像情報とは幾何学的にずれている場合がある。そこで、幾何学的ずれ検出部701は、印刷物112と、印刷物112以外との境界線をエッジ検出にて検出する。
図8は、撮影画像の一例を示す図である。印刷解像度と撮像センサ105の解像度とが同一解像度であれば、プリント部103の紙上記録時の斜行、及び、カメラ付携帯端末104を印刷物112にかざす時のずれ等により、画像の回転方向(傾き)が補正すべき大きな要因となる。そのため、印刷物112の境界線を検出することにより、どの程度、回転方向でずれが生じているかを判定する。
ブロック化部702は、横P画素、縦Q画素単位にブロック化を行う。ここで、各ブロックは、電子透かしの重畳時にブロック化したN×M画素よりも小さい。即ち、式(4)の関係が成り立つ。
P≦N、かつ Q≦M …(4)
また、P×Q画素単位のブロック化は、ある一定間隔毎にスキップして行われる。即ち、多重化時のN×M画素より成るブロックと想定される領域内に、P×Q画素単位のブロックが一つ内包されるようにブロック化が行われる。スキップ画素数は、水平N画素分、垂直M画素分が基本となるが、幾何学的ずれ検出部701により検出されたずれ量をブロック数で割り出された1ブロックあたりのずれ量とスキップ画素数とに基づいて補正が行われる。
空間フィルタ703、704は、それぞれ特性の異なる空間フィルタA、Bを示し、フィルタリング部705は、周辺画素との積和を演算するディジタルフィルタリング部を示す。この空間フィルタの各係数は、多重化時の量子化条件の変動閾値の周期に対応して設定される。ここで、付加情報多重化部102における量子化条件の変更が図6(a)及び(b)の2種類の周期性を用いて行われることにより、付加情報が多重化されたとする。その場合の付加情報分離部106に用いる空間フィルタA703、空間フィルタB704の例を、図9(a)及び(b)に示す。図9(a)及び(b)中、5×5画素の中央部が注目画素になり、それ以外の24画素分が周辺画素になる。図9(a)及び(b)中、空白部の画素は、フィルタ係数が"0"であることを表す。図9から明らかなように、図9(a)及び(b)は、エッジ強調フィルタになっている。しかも、その強調するエッジの方向性と多重化した時の変動閾値の方向性とが図9(a)及び(b)と図6(a)及び(b)とで一致している。つまり、図9(a)は図6(a)に一致し、また、図9(b)は図6(b)に一致するように、空間フィルタが作成される。
間引き部706、707は、それぞれ、P×Q画素により成るブロック内のフィルタリング後の信号(以下、変換値という)を、ある規則性に基づいて間引き処理する。本実施形態では、周期性と位相のそれぞれの規則性に分離して間引き処理を行う。即ち、間引き部706及び707では間引きの周期性が互いに異なっていて、それぞれにおいて、位相を変化させた複数の間引き処理を実行する。間引き方法については後述する。
変換値加算部708は、間引き部706及び707により間引きされた変換値を、位相毎にそれぞれ加算する。この間引き処理及び間引き画素の変換値の加算処理は、空間フィルタで強調した所定周波数ベクトルの電力(パワー)を抽出することに相当する。
分散値算出部709は、それぞれの周期性において、位相毎に加算した複数の加算値の分散値を算出する。判定部710は、それぞれの周期性における分散値に基づいて、多重化された符号を判定する。
図10は、二次元の周波数領域を示す図である。横軸は水平方向の周波数、縦軸は垂直方向の周波数を示している。中心となる原点は直流成分を示し、原点から遠ざかるにつれて、高周波域となる。図10中の円は、誤差拡散によるカットオフ周波数を示している。誤差拡散法のフィルタ特性は、低周波域がカットオフされたHPF(ハイパスフィルタ)の特性を示し、そのカットオフされる周波数は、対象画像の濃度に応じて変化する。
本実施形態では、量子化閾値の変更により量子化後に発生する周波数特性が変化するが、図6(a)による量子化閾値の変更では、図10の周波数ベクトルA上に大きなパワースペクトルが生じる。また、図6(b)による量子化閾値の変更では、図10の周波数ベクトルB上に大きなパワースペクトルが生じる。付加情報分離時には、この大きなパワースペクトルが発生する周波数ベクトルを検出することに基づいて、多重化信号の判定が行われる。本実施形態では、各々の周波数ベクトルを個別に強調、抽出することが行われる。
図9(a)及び(b)は、特定の周波数ベクトルの方向性を有するHPFに相当する。即ち、図9(a)の空間フィルタでは、図10の直線A上の周波数ベクトルを強調することが可能になり、また、図9(b)の空間フィルタでは、図10の直線B上の周波数ベクトルを強調することが可能になる。例えば、図6(a)に示すような量子化条件の変更により、図10の直線Aの周波数ベクトル上に大きなパワースペクトルが発生したとする。その時に、図9(a)の空間フィルタではパワースペクトルの変化量が増幅するが、図9(b)の空間フィルタでは、ほとんど増幅されない。つまり、複数の空間フィルタを並列にフィルタリングした場合に、周波数ベクトルが一致した空間フィルタ時のみ増幅し、それ以外のフィルタによるフィルタリングの場合には増幅がほとんどない。従って、いかなる周波数ベクトル上に大きなパワースペクトルが発生しているかを容易に判定することができる。
図11は、図7の間引き部706及び707、変換値加算部708、分散値算出部709、判定部710の処理を示すフローチャートである。図11の処理は、例えば、カメラ付携帯端末104のCPU2310がROM2311に記憶されているプログラムをRAM2312に読み出して実行することにより実現される。
図11中、S1101及びS1102は、変数の初期化を示し、CPU2310は、RAM2312内に確保された変数i、jの値を0に初期化する。
S1103では、CPU2310は、間引き部706及び707による間引きの規則性の因子、即ち、"周期性"及び"位相"の2因子を決定する。本フローチャートでは、周期性に関する変数をi、位相に関する変数をjとする。この周期性及び位相の条件は、番号(ナンバー)により管理され、ここでは、周期性ナンバー(以下No.と略す)がi、位相No.がjである間引き方法の因子を設定する。
S1104では、CPU2310は、ブロック内で間引きをした変換値を加算し、その加算値を変数の配列TOTAL[i][j]として記憶する。
S1105では、CPU2310は、変数jをカウントアップし、S1106において、固定値Jと比較する。Jには、位相を変化させて間引き処理をする回数が格納されている。ここで、変数jがJ未満であれば、S1103に戻り、カウントアップ後のjによる新たな位相No.により、間引き処理及び間引き画素の変換値の加算処理が繰り返される。
位相をずらした間引き処理及び間引き画素の変換値の加算処理が設定回数終了した場合、S1107において、CPU2310は、加算結果TOTAL[i][j]の分散値を算出する。即ち、各加算結果が位相の差によりどの程度ばらついているかが評価される。ここでは、iを固定して、J個のTOTAL[i][j]の分散値を求める。ここで、分散値をB[i]とする。
S1108において、CPU2310は、変数iをカウントアップし、S1109において、固定値Iと比較する。Iには、周期性を変化させて間引き処理をする回数が格納されている。ここで、変数iがI未満であれば、S1102に戻り、カウントアップ後のiによる新たな周期性No.の条件を用いて、再び、間引き処理及び間引き画素の変換値の加算処理が繰り返される。
S1109において、CPU211は、iが設定回数終了したと判定されると、分散値B[i]は、I個算出できたことになる。S1110にて、I個の分散値の集合から、分散値の最大値を検出し、その時のiの値を変数imaxに代入する。S1111において、CPU211は、周期性No.がimaxである符号を、多重化された符号であると判定する。その後、図11の処理を終了する。
以下、I=2、J=4の例を説明する。図12、図13は、ブロックサイズをP=Q=16とした時の間引き方法を説明するための図であり、テーブル形式で示している。図12及び図13においては、ブロック内の一マスが一画素分を表している。図12及び図13では、ブロック形状をP=Qの正方形としているが、正方形に限られず、また、矩形以外でも良い。
図12は、周期性No.=0の場合の間引き方法(図7の間引き部A706に相当)を示し、図13は、周期性No.=1の場合の間引き方法(図7の間引き部B707に相当)を示している。図中、ブロック内の各画素に示している値は、位相No.であるjの間引き画素を示している。例えば"0"と表示している画素は、j=0の時の間引き画素に対応する。即ち、図12、図13ともに、位相は4種類であり、位相No.jが0〜3の場合の間引き方法に相当する。
図12の周期性は図6(a)の周期性に一致し、図13の周期性は図6(b)の周期性に一致している。前述したように、図6(a)及び(b)ともに、図中の灰色のマスの並びで量子化値"1"(但し、"0"、"1"の2値の場合)が並びやすくなる。その為、例えば、多重化時に量子化条件Aであったブロックの場合には、図6(a)の周期性で量子化値"1"が並びやすくなる。適合した空間フィルタを適用してフィルタリングが行われた場合には、更にその周波数成分が増幅され、図12の周期性で変換値の間引き処理及び間引き画素の変換値の加算処理が行われると、その加算結果の分散値は大きくなる。
それに比べて、量子化条件Aであったブロックを、適合しない空間フィルタを適用してフィルタリングし、なおかつ、図13の周期性により間引き処理及び間引き画素の変換値の加算処理が行われると、変換値の加算結果の分散値は小さくなる。これは、量子化値の周期性と間引きの周期性とが異なることから、間引きの位相の違いによる変換値の加算値は平均的になり、ばらつきが小さくなるからである。同様に、多重化時に量子化条件Bであったブロックについて、図12の周期性で変換値の間引き処理及び間引き画素の変換値の加算処理が行われると、その加算結果の分散値は小さくなる。一方、その場合に、図13の周期性で変換値の間引き処理及び間引き画素の変換値の加算処理が行われると、その加算結果の分散値は大きくなる。
図4で説明したように、bit=0を量子化条件Aに設定し、bit=1を量子化条件Bに設定している。その為、周期性No.=0の分散値が大きいときには、bit=0と判定することができ、周期性No.=1の分散値が大きいときには、bit=1と判定することができる。
このように、量子化条件と、空間フィルタ特性と、間引き条件の周期性とを関連付けることで、多重化及び分離が容易に実現できる。本実施形態では、周期性No.は0と1の2種類であり、ブロック内の多重化符号は1ビットであった。しかしながら、多重化符号は、1ビットより多くても良い。当然に、量子化条件の種類と、空間フィルタの種類と、間引き条件の周期性No.の種類(Iの値)とは一致する。
本実施形態によれば、直交変換による量子化条件の規則性に対応した周波数のパワーの比較をしなくても、多重化された符号を容易に分離できる。しかも、実空間領域の処理であるので、極めて高速に分離処理が実現できる。
以上、本実施形態を説明してきたが、量子化条件A及びB、空間フィルタA及びB、間引き部A及びBは一例であり、これに限られるものではない。他の周期性について行われても良いし、空間フィルタのタップ数、間引きのブロックサイズ等は、本実施形態での例よりも大きくても小さくても良い。
また、図11の処理では、説明上、周期性No.である変数i、及び、位相No.である変数jの繰り返し処理を説明した。しかしながら、P×Q画素よりなるブロック内の画素アドレスによる繰り返し処理により実現しても良い。即ち、図12、図13に示したように、ブロック内の各画素アドレスに対して周期性No.及び位相No.の2種の情報をテーブルとして予め格納しておき、対応した周期性No.及び位相No.の各々の変数に対して変換値を加算していく方法である。この方法では、P×Q画素分を処理するだけで、周期性No.及び位相No.の各集合の加算値を並列に算出することができる。
また、図11の処理では、空間フィルタによるフィルタリング後の間引き画素の変換値の加算結果の分散値を算出して、分散値の大小比較により、符号を判定していたが、これに限られない。分散値を用いない評価関数の比較により判定されても良い。間引きした変換値の加算結果の偏りは、位相をずらした際に、一つの位相の時だけ値が突出しやすいため、"ばらつき度合い"が評価できれば良い。
例えば、ばらつき度合いを評価するには、例えば、分散値以外に以下のような評価関数が用いられても良い。
1.間引きした変換値を加算した加算値の最大値と最小値の差分。
2.間引きした変換値を加算した加算値の最大値と2番目に大きな値との差分、もしくは、最小値と2番目に小さな値との差分のいずれか。
3.間引きした変換値を加算した加算値によるヒストグラムを作成した時の、前後の順番の差分の最大値。
また、上記3つの評価関数は絶対的な差分値であるが、これらの差分値と変換値、もしくは、画素値や変換値の総和等との相対的な比率を評価関数として用いても良い。また、量子化値は二値化を例にして説明したが、これに限られない。
以上のように、本実施形態によれば、画像をM×N画素より成るブロック単位で量子化条件を変更し、その量子化条件に従って画像を量子化することにより画像に対して所定の付加情報を埋め込むことができる。よって、例えば直交変換をして情報を埋め込む方法に比べて、画質劣化を抑制し、かつ高速に、かつ埋め込まれた付加情報が精度よく抽出できるように、画像に対して付加情報を埋め込むことができる。
また、本実施形態によれば、上記のように多重化情報(付加情報)を不可視で埋め込み、さらに、撮像して読み込むので、印刷物上にコード部を配置する必要がない。従って、写真鑑賞の観点で不必要と考えられるコード部の配置を避けることができる。加えて、印刷物のコード部を撮像してその後に写真部を撮像する、あるいは、どの特徴量を使用するかのユーザ操作後に写真部を撮像する、という2アクションのユーザの手間を必要としない。本実施形態では、印刷物の写真部のみを撮像する1アクションで実行できるので、ユーザ工数を低減し、利便性を向上させることができる。
[第2の実施形態]
以下、本実施形態について、第1の実施形態と差異がある点についてのみ説明を行う。図20は、本実施形態において、印刷アプリケーションにより出力した印刷物112を示す図である。用紙2001にコード部2002が印刷されている。第1の実施形態では、動画像から切り出した写真を印刷したが、本実施形態では、コードのみを印刷する。コード部2002には、後述するように、多重化情報が埋め込まれている。ここで、コード部2002は、特徴量作成時に固有の特徴が出るパターンの画像が望ましい。また、コード部2002は、撮像の際に煽り(傾き)や回転が起きていても、特徴量を用いたマッチング時に、向きや大きさ、位置が分かるようなパターンの画像である。
図21は、情報多重化された印刷物の生成処理を示すフローチャートである。図21の処理は、例えば、画像処理装置115のCPU211がROM212に記憶されているプログラムをRAM213に読み出して実行することにより実現される。
S2101では、S1801と同様、PCあるいはスマートフォンなどの端末で印刷アプリケーションがユーザ指示により起動する。
S2102では、3Dオブジェクトの選択が行われる。3Dオブジェクトとは、AR技術によって表示するオブジェクトであり、例えば、家具や家、自動車、洋服、人、動物、キャラクター、食べ物など、様々なコンテンツである。ユーザは、印刷アプリケーションに予め備えられているコンテンツや、ネットワークを使用してサーバにあるコンテンツを選択する。あるいは、選択の代わりに、ユーザ自身が作成した3Dオブジェクトを読み込んで取得するようにしても良い。3Dオブジェクトは、例えば、Wavefront OBJ(登録商標)、LWS(登録商標)、3DS(登録商標)、VRML(登録商標)など、公知の形式で座標や色、光源など、3Dオブジェクトを再生するための情報を有している。3Dオブジェクトのプレビューや説明文のリストがディスプレイに表示されると、ユーザは、任意のオブジェクトをポインティングデバイスやキーボードの入力装置、あるいはタッチ操作により選択する。
S2103では、印刷アプリケーションは、コードを取得する。コードとは、図20に示すコード部2002のような二次元の画像情報である。印刷アプリケーションが複数のコードパターンを保持し、そこから選択するようにしても良い。また、コード部2002は、印刷アプリケーション内で動的に作成されても良いし、ネットワークを介してサーバからダウンロードされても良い。また、ユーザが作成したコードを読み込んで取得するようにしても良い。また、コード部2002は、バーコードでも良いし、ロゴやキャラクターが描画されていても良いし、白黒でもカラーでも良い。但し、前述したように、コード部2002は、特徴量の作成時に固有の特徴が出るパターンの画像である。また、コード部2002は、撮像の際に煽り(傾き)や回転が生じていても、特徴量を用いたマッチング時に向きや大きさ、位置が分かるようなパターンの画像である。
S2104では、印刷アプリケーションは、特徴量を作成する。S2103で取得されたコードに対し、第1の実施形態のS1806と同様に、特徴量の作成が行われる。尚、コードの特徴量が他のアプリケーションやサーバにある場合、特徴量を作成する代わりに、他のアプリケーションやサーバにある該コードの特徴量を用いるようにしても良い。また、サーバへコードの画像を送り、サーバで特徴量を作成し、該特徴量を印刷アプリケーションがダウンロードしても良い。但し、後述する読取アプリケーションで使用する特徴量作成の方式と同じ方式でコードの特徴量を取得しておく必要がある。
S2105では、印刷アプリケーションは、付加情報を取得する。本実施形態における付加情報は、S2104で作成された特徴量情報およびS2102で選択された3Dオブジェクト情報である。第1の実施形態のS1807と同様に、付加情報は、図1に示す入力端子101を介して付加情報多重化部102へ入力される。
S2106では、印刷アプリケーションは、付加情報多重化を行う。第1の実施形態のS1808と同様に、図1の付加情報多重化部102は、コード部2002の画像情報と付加情報とを用いて多重化画像を作成する。
S2107では、印刷アプリケーションは、印刷を行う。第1の実施形態のS1808と同様に、多重化画像がプリント部103へ送られて印刷される。その結果、用紙2001に情報多重化されたコード部2002が印刷された印刷物112が出力される。
本実施形態における印刷物112を図20に示す。用紙2001にはコード部2002が印刷されており、コードのパターンを表している。そして、コード部2002には、情報多重化が施されており、多重化信号が埋め込まれている。図20では、白と黒の2色で表しているが、実際は、第1の実施形態で説明したような方式で多重化信号を埋め込むので、多色使用されている。尚、白や黒の部分に多重化信号を埋め込む方法は、第1の実施形態での説明と同じであるので、その説明を省略する。
図22は、S2107で出力された情報多重化された印刷物112を読み取る読取アプリケーションの処理を示すフローチャートである。図22の処理は、例えば、カメラ付携帯端末104のCPU2310がROM2311に記憶されたプログラムをRAM2312に読み出して実行することにより実現される。
S2201では、PCあるいはスマートフォンなどカメラを搭載したデバイス、あるいはカメラが接続されたデバイス上で、情報多重化読取アプリケーション(以下、読取アプリケーション)が、ユーザ指示により起動する。
S2202では、カメラでの撮像が行われる。第1の実施形態のS1902と同様に、読取アプリケーションは、デバイスのカメラ機能により撮像された映像をディスプレイ109に表示する。ユーザは、カメラがどこを映しているのかをディスプレイ109で確認しながら印刷物112を含むように撮像する。この間、撮像センサ105は、1秒間に30回などの単位で、撮像した画像を取得し続ける。この撮像動作は、読取処理終了まで繰り返される。ここで、取得した画像は、RGBそれぞれ8[bit]の24[bit]画像データであるとする。
S2203では、読取アプリケーションは、多重化された付加情報の取出しを行う。付加情報分離部106は、S2202で撮像センサ105から取得された画像から付加情報を分離し、付加情報を取り出す。ここで、付加情報は、S2105で入力端子101に入力されS2106で多重化された、特徴量情報および3Dオブジェクト情報である。S2202でのカメラでの撮像と、S2203での付加情報の取出しとは繰り返して行われる。付加情報の取出しが完了すると、読取アプリケーションは、ディスプレイ109に表示したり、スピーカ108から音を発するなどしてユーザに読取りが成功したことを通知する。
S2204では、読取アプリケーションは、3Dモデルの再生準備を行う。ここで、再生準備とは、3Dモデルを立体物として表示させる環境を用意することである。読取アプリケーションは、例えば、CUDA(登録商標)やOpenGL(登録商標)やOpenGL ES(登録商標)を用いて作成された3D再生プログラムを用意し、3Dオブジェクトデータ取得を可能な状態とする。そして、S2203で取り出された3Dオブジェクト情報に基づき、メモリの確保、3D再生プログラムの展開、GPUへのプログラム展開などの設定が行われる。これにより、3D再生用のAPIに、座標や角度、距離や大きさなどを入力することにより、ディスプレイ109の任意の場所に3Dオブジェクトを表示させることが可能になる。
S2205では、読取アプリケーションは、画像の特徴量を算出する。読取アプリケーションは、S2202から繰り返し行われているカメラでの撮像により、RGB画像を逐次取得する。そして、読取アプリケーションは、そのRGB画像に対し、S2104での特徴量の作成と同じ処理を施し、RGB画像の特徴量を作成する。
S2206では、読取アプリケーションは、特徴量の比較を行う。読取アプリケーションは、S2203で取り出された特徴量情報と、S2205で作成された撮像画像の特徴量とを比較し、撮像画像内に印刷物に印刷された対象の画像、即ちコード部2002が存在するか否かを判定する。ここで、撮像画像内に、プリント部103により印刷された対象の画像が存在すると判定された場合、その判定された画像の座標位置、角度、大きさを取得する。一方、比較の結果、撮像画像内に対象の印刷物が存在しないと判定された場合、読取アプリケーションの処理はS2205に戻り、新たにRGB画像を取得し、そのRGB画像の特徴量を作成する。撮像画像内に対象の画像が存在すると判定された場合、処理はS2207へ進む。S2206では、大きさ情報から、距離等、他の値が算出されても良い。
S2207では、読取アプリケーションは、画像の合成を行う。S2206で取得された座標位置、角度、大きさに基づき、S2204で準備された3D再生の環境を用いて、S2202で撮像を開始して得た画像上に3Dオブジェクトを合成する。尚、合成は、ディスプレイ表示を行うVRAM(不図示)上に、GPUの機能を用いて3Dオブジェクトを上書き(合成)することで行われる。尚、この合成処理は、例えば、CPUを用いてメモリ上で行いVRAMへ描画する方法で実現しても良い。3Dオブジェクトは、図20のコード部2002の上に3Dオブジェクトが乗り、コード部2002の前方向に3Dオブジェクトの正面が向くように表示される。その結果、ディスプレイ109上では、カメラで撮像した映像上に3Dオブジェクトが表示されることになる。
S2208では、読取アプリケーションは、3Dオブジェクトの表示の終了のユーザ操作が行われたか否かの判定を行う。例えば、ユーザ操作により、デバイスのホームボタンやキーボードのエスケープボタンが押下されたか否かが判定される。あるいは、ディスプレイ109上にユーザインタフェース(UI)を表示し、UIの終了ボタンがタップやクリックされたか否かが判定される。終了のユーザ操作が行われたと判定された場合、S2202から開始していた撮像動作は終了し、読取アプリケーションの終了処理に進む。一方、終了のユーザ操作が行われなかったと判定された場合、処理はS2205に戻る。
図24は、上記の実行結果を表した図である。図24Aは印刷物2001を床に置き、やや左からスマートフォン2402のカメラ機能を用いて撮像した場合の例である。コードが印刷された印刷物2001を置くと、2401のような形に見える。スマートフォン2402で印刷物2401を含むようにやや左から撮像すると、印刷物2401はディスプレイ2403には2405のように表示される。そして、2405の位置、大きさ、角度より3Dオブジェクト2404が図のような位置、大きさ、角度で表示される。例えば、3Dオブジェクトを家具としたとき、部屋に置いたときの大きさや色合いなどがシミュレーションできる。やや左から撮像した結果、3Dオブジェクトの向かって左面が見えている。
図24Bは、図24Aの説明で床に置いた印刷物2401をやや右から撮像した場合の例である。上記と同様に、ディスプレイ2403には、印刷物2405の上に3Dオブジェクト2404が図のような位置、大きさ、角度で表示される。やや右から撮像した結果、3Dオブジェクトの向かって右面が見える。
ここでは説明の便宜上、3Dオブジェクトは2405より小さい図となっているが、それに限らない。マッチングの対象画像が印刷された2405より大きく、表示上、2405が隠れてしまうような大きな3Dオブジェクトでも同様に実現可能である。
以上のように、カメラで撮像した映像上に3Dオブジェクトが表示され、印刷物に対してカメラの向きや角度、距離を変えると、3Dオブジェクトもそれに合わせて向きや角度、大きさが変化して表示される。その結果、ユーザは、ディスプレイ109を見ると、あたかもその場に3Dオブジェクトがあるかのような映像をリアルタイムで得ることができる。
図25は、他の3Dオブジェクトを表示させた例である。2501は図24A及び図24Bの2401と同様に多重化情報が埋め込まれたコード画像が印刷された印刷物である。ディスプレイ2503には、印刷物2501が2505のように映されており、その真上に浮かぶように3Dオブジェクト2504が表示される。これは、上述したようにマッチングの結果、2505が対象の画像領域であると判定され、該画像の位置、大きさ、角度に基づいて浮かんだように見える位置、大きさ、角度に3Dオブジェクト2504を合成することで実現される。浮かんだように見える位置は、2505の大きさのN%の距離など、予め定めておけば良い。
このように、対象の画像領域にのみ3Dオブジェクトを表示させるのみではなく、対象の画像領域に基づいて、オブジェクトの位置を決めても良い。また、3Dオブジェクトは移動や変形しても良い。移動する際も、対象の画像領域の位置に基づいて移動すると、ユーザは拡張現実として認識しやすい。
本実施形態では、ARに必要な情報である特徴量と3Dオブジェクトのデータが印刷物そのものに埋め込まれている。そのため、ネットワークが使えない環境下でもARの処理を行うことができる。また、そのような環境でも、少数のコンテンツのための専用アプリケーションではなく、不特定多数のコンテンツを汎用的に使える読取アプリケーションにより実現することができる。加えて、撮像する対象の印刷物の箇所は1つであるため、ユーザの撮像の手間が少なくて済むという効果もある。
第1の実施形態では、動画から切出しを行った画像を印刷し、動画再生をARの効果としていたが、これに限られない。その動画の関連静止画を印刷対象としたり、反対に画像に関連する動画を再生するようにしても良い。また、静止画と動画は関連していなくても良い。
第2の実施形態では、ディスプレイ109上に3Dオブジェクトを出現させたが、この応用も考えられる。例えば、ネットワーク等の通信機能を用いて、ディスプレイ109上に出現させた3Dオブジェクトを画面としてテレビなどの動画を表示させたり、テレビ電話を実現するようにしても良い。3Dオブジェクトを画面とすれば、その上でWebブラウザやゲームなど、他のアプリケーションを表示することもできる。また、3Dオブジェクトは、静止物に限られず、動きや変形、変色などの効果が加わっても良い。例えば、3Dのアバターを表示し、会議などのコミュニケーションを行うようにしても良い。
第1及び第2の実施形態では、画像の特徴量を多重化の際の付加情報として埋め込んだが、その限りではない。例えば、専用サーバに特徴量をアップロードしておき、それをダウンロード可能なURLを付加情報として多重化により印刷物に埋め込んでも良い。つまり、このURLは、特徴量を取得するための情報であり、それが不可視で埋め込まれていることになる。これにより、より大きな容量の特徴量を使用可能となる。
また、ARの効果画像処理は、動画再生や3Dオブジェクト出現に限られず、メッセージや音楽などの音声でも良い。また、これらのコンテンツはネットワーク上のものでも良いし、埋め込める容量に収まるのであれば、印刷物に多重化情報として埋め込むようにしても良い。これにより、ネットワークなどの通信を行う必要をなくすことができる。
読取アプリケーションを動作させるデバイスのストレージ内に格納されているものであれば、それを動作させる指示をする命令を、多重化情報として埋め込み、読取アプリケーションでその命令を実行するようにしても良い。例えば、スマートフォン内の動画を指定して、第1の実施形態のように動画を再生しても良い。これにより、ネットワークなどの通信を行う必要をなくすことができ、且つ、印刷物に多重化情報として埋め込める容量以上のコンテンツを再生することができる。
また、多重化情報として、これらのコンテンツの再生方法を記述するようにしても良い。例えば、第1の実施形態で示した動画の再生であるのか、第2の実施形態で示した3Dオブジェクトの再生であるのか、という情報である。従来は、これらは、それぞれ専用アプリケーションとして頒布されていた。しかしながら、このような構成によれば、1つの汎用アプリケーションで様々なコンテンツの再生が可能となり、ユーザは、多数のアプリケーションをダウンロードする必要がなくなる。よって、スマートフォンなどのデバイスのストレージ容量が圧迫されにくくなる。また、コンテンツによってアプリケーションを切り替えるユーザの手間を減らすことができる。
また、第1および第2の実施形態では、カメラで撮像した映像をリアルタイムでディスプレイに表示し、動画像や3Dオブジェクトを合成したが、この限りではない。読み取り対象の画像を含むように静止画を撮影し、該静止画に対して動画像や3Dオブジェクトの合成を行い、ディスプレイに表示しても良い。これにより、カメラで撮影したリアルタイムの映像に合成する必要がなくなる。そのため、AR実行時にカメラ機能や特徴量作成、特徴量マッチングなどの処理を省く事ができ、性能が低い端末でも実行可能となる。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。