(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-09
(45)【発行日】2024-02-20
(54)【発明の名称】情報処理装置、情報処理装置の制御方法、プログラム、および記憶媒体
(51)【国際特許分類】
H04N 1/32 20060101AFI20240213BHJP
H04N 1/387 20060101ALI20240213BHJP
H04N 7/18 20060101ALI20240213BHJP
H04N 23/60 20230101ALI20240213BHJP
H04N 23/63 20230101ALI20240213BHJP
【FI】
H04N1/32 144
H04N1/387 800
H04N1/387 700
H04N7/18 U
H04N23/60 500
H04N23/63
(21)【出願番号】P 2020000318
(22)【出願日】2020-01-06
【審査請求日】2022-12-19
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】大曲 勇気
(72)【発明者】
【氏名】酒井 洋行
(72)【発明者】
【氏名】石田 祐樹
(72)【発明者】
【氏名】鈴木 智博
【審査官】花田 尚樹
(56)【参考文献】
【文献】特開2019-009746(JP,A)
【文献】特開2002-077707(JP,A)
【文献】特開2018-164143(JP,A)
【文献】特開2005-348379(JP,A)
【文献】特開2018-207230(JP,A)
【文献】特開2013-135246(JP,A)
【文献】特開平09-128539(JP,A)
【文献】特開2019-091976(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 1/32 - 1/36
1/42 - 1/44
H04N 1/38 - 1/393
H04N 7/18
H04N 5/222- 5/257
23/00
23/40 -23/76
23/90 -23/959
(57)【特許請求の範囲】
【請求項1】
所定の周波数特性を有する
パターンを複数埋め込むことによって付加情報が埋め込まれた
画像を撮像手段
で撮像した撮像
画像を取得する第1
の取得手段と、
前記撮像画像のうち互いに異なる位置の複数の部分画像のそれぞれを空間周波数領域の画像に変換する変換手段と、
前記複数の部分画像のそれぞれに対応する複数の前記空間周波数領域の画像を利用して、前記複数の部分画像のそれぞれに対応する前記画像の位置と前記撮像手段との距離
を示す相対距離情報を取得する第2
の取得手段と、
前記第2の取得手段で取得された、前記複数の部分画像のそれぞれに対応する複数の相対距離情報を用いて前記撮像画像のあおり補正を行う補正手段と、
前記撮像画像を前記補正手段で補正した補正画像から、前記付加情報を抽出する抽出手段と
を有することを特徴とする
情報処理装置。
【請求項2】
前記複数の部分画像の中心はそれぞれ、前記撮像画像のうち中心からの距離が等しいことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記複数の部分画像の中心はそれぞれ、前記撮像画像の中心と頂点との中央に位置することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記複数の部分画像の中心はそれぞれ、前記撮像画像の中心と頂点を結ぶ直線上に位置することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記複数の部分画像は、4つの部分画像であることを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項6】
前記第2の取得手段は、前記空間周波数領域の画像に生じるパワースペクトルのピークの位置に対応する値を当該空間周波数領域の画像に対応する部分画像についての前記相対距離情報として取得することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
前記第2の取得手段は、前記空間周波数領域の画像に生じるパワースペクトルのピークの位置の、当該空間周波数領域の画像の中心からの距離に対応する値を当該空間周波数領域の画像に対応する部分画像についての前記相対距離情報として取得することを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
前記
第2の取得手段は、前記空間周波数領域の画像の中心からの距離が異なるリング状の
複数のエリアのうち、当該空間周波数領域の画像に生じるパワースペクトルのピークの位置がどのエリアに存在するかを特定し、特定されたエリアに対応する値を当該空間周波数領域の
画像に対応する部分画像についての前記相対距離情報として取得することを特徴とする請求項
1乃至7のいずれか1項に記載の
情報処理装置。
【請求項9】
前記複数の空間周波数領域の画像はそれぞれ、当該空間周波数領域の画像の中心から遠ざかるにつれて高周波域となる画像であることを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
【請求項10】
前記複数の空間周波数領域の画像のそれぞれにおいて、当該空間周波数領域の画像の中心を原点として、第1の軸が水平方向の空間周波数を、前記第1の軸と垂直な第2の軸が垂直方向の空間周波数を表していることを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
【請求項11】
前記変換は2次元の高速フーリエ変換であることを特徴とする請求項1乃至10のいずれか1項に記載の情報処理装置。
【請求項12】
前記補正手段は、前記複数の
相対距離情報のそれぞれ
を用いて補正前の頂点座標値を補正後の頂点座標値に
補正するためのオフセット値を求め、当該オフセット値を用いて台形補正
することにより前記あおり補正を行うことを特徴とする請求項
1乃至11
のいずれか1項に記載の
情報処理装置。
【請求項13】
所定の周波数特性を有する
パターンを複数埋め込むことによって付加情報が埋め込まれた
画像を撮像手段
で撮像した撮像
画像を取得する第1
の取得工程と、
前記撮像画像のうち互いに異なる位置の複数の部分画像のそれぞれを空間周波数領域の画像に変換する変換工程と、
前記複数の部分画像のそれぞれに対応する複数の前記空間周波数領域の画像を利用して、前記複数の部分画像のそれぞれに対応する前記画像の位置と前記撮像手段との距離
を示す相対距離情報を取得する第2
の取得工程と、
前記第2の取得工程で取得された、前記複数の部分画像のそれぞれに対応する複数の相対距離情報を用いて前記撮像画像のあおり補正を行う補正工程と、
前記撮像画像を前記補正工程で補正した補正画像から、前記付加情報を抽出する抽出工程と、
を備えることを特徴とする情報処理
装置の制御方法。
【請求項14】
コンピュータを、請求項1乃至12のいずれか1項に記載された情報処理装置の各手段として機能させるためのプログラム。
【請求項15】
コンピュータを、請求項1乃至12のいずれか1項に記載された情報処理装置の各手段として機能させるためのプログラムを格納したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、印刷画像の撮像画像データを処理する技術に関する。
【背景技術】
【0002】
現在、電子透かし技術によって付加情報が埋め込まれた印刷画像を撮像手段によって撮像し、印刷画像データから付加情報を読み取る技術が知られている。
【0003】
特許文献1には、スマートフォン等の携帯端末に内蔵の撮像デバイスを用いて画像を読み取り、読み取った画像から付加情報を抽出する技術が開示されている。この文献には、ロバスト性の高い付加情報の読み取りを可能にするため、撮像する印刷画像の拡大縮小の検出と回転の検出を行うことが開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、スマートフォンなどの携帯端末の撮像手段を用いて印刷画像を撮像する場合、印刷物とカメラとの間で3次元の傾き(あおり)が発生することがある。特許文献1の方法では、端末と印刷画像との間にあおりが発生した場合、適正な撮像データを取得することが困難になる。
【0006】
本発明は、上記課題に鑑み、付加情報を埋め込んだ印刷画像と撮像手段との間に生じたあおりの状態を取得する技術の提供を目的とする。
【課題を解決するための手段】
【0007】
本発明は、所定の周波数特性を有するパターンを複数埋め込むことによって付加情報が埋め込まれた画像を撮像手段で撮像した撮像画像を取得する第1の取得手段と、前記撮像画像のうち互いに異なる位置の複数の部分画像のそれぞれを空間周波数領域の画像に変換する変換手段と、前記複数の部分画像のそれぞれに対応する複数の前記空間周波数領域の画像を利用して、前記複数の部分画像のそれぞれに対応する前記画像の位置と前記撮像手段との距離を示す相対距離情報を取得する第2の取得手段と、前記第2の取得手段で取得された、前記複数の部分画像のそれぞれに対応する複数の相対距離情報を用いて前記撮像画像のあおり補正を行う補正手段と、前記撮像画像を前記補正手段で補正した補正画像から、前記付加情報を抽出する抽出手段と、を有することを特徴とする情報処理装置である。
【発明の効果】
【0008】
本発明によれば、付加情報を埋め込んだ印刷画像と撮像手段との間に生じたあおりの状態を取得することが可能になる。
【図面の簡単な説明】
【0009】
【
図1】画像処理システムのハードウェアの構成例を示す図である。
【
図2】プリンタのハードウェアの一部を示す模式図である。
【
図3】プリンタの制御回路部の構成例を示す図である。
【
図4】画像処理システムの構成例を示すブロック図である。
【
図5】アプリケーションの画面の一例を示す図である。
【
図6】アプリケーションの埋め込み情報設定のダイアログの一例を示す図である。
【
図7】アプリケーションの印刷設定ダイアログの一例を示す図である。
【
図9】印刷データ生成処理の一例を示すフローチャートである。
【
図11】付加情報の埋め込み処理のフローチャートである。
【
図12】付加情報を埋め込むパターンを示す図である。
【
図14】印刷媒体への単位ブロック埋め込み例を示す図である。
【
図15】付加情報読み取り部の構成を示すブロック図である。
【
図16】撮像画像と距離検出のためのトリミングエリアの例を示す図である。
【
図17】距離情報の算出処理を示すフローチャートである。
【
図18】FFT画像と同画像に基づく距離情報の取得例を示す図である。
【
図20】仮想台形の形状を算出する様子を示す図である。
【
図21】あおり発生時に行われる通知例を示す図である。
【発明を実施するための形態】
【0010】
以下に、添付図面を参照して、本発明の実施の形態を例示的に詳しく説明する。ただし、以下の実施形態に記載されている構成要素はあくまで例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【0011】
(第1実施形態)
<画像処理システムの概要>
本実施形態においては、画像処理装置(情報処理装置)が、付加情報の埋め込みと読み取りとを実行可能なアプリケーションを備えている。このアプリケーションが、付加情報が埋め込まれたコンテンツ(画像データ)を作成する。画像処理装置は、作成したコンテンツから印刷データを生成し、プリンタに送信する。プリンタは、印刷データを用いて印刷を行い、付加情報が埋め込まれた印刷画像が出力される。
【0012】
本実施形態において「付加情報」とは、印刷物に埋め込まれる情報のことである。付加情報は、視覚的に目立たないように印刷画像に埋め込まれる(付加される、あるいは多重化される、という場合もある)。付加情報のことを多重化情報、透かし情報、または埋め込み情報と呼ぶこともある。
【0013】
<画像処理装置のハードウェア構成>
図1は、本実施形態に係る画像処理システムのハードウェアの構成例を示す図である。本実施形態に係る画像処理システムにおいては、ネットワークを介して、画像処理装置100(情報処理装置)とプリンタ114とが接続される。
図1では、さらにサーバ116がネットワークを介して接続されているが、サーバ116は必ずしも接続されていなくてもよい。
【0014】
画像処理装置100は、例えば、スマートフォン、タブレットPC、およびノート型PC等の携帯型の情報端末や、非携帯型のデスクトップPC等が該当する。以下、本実施形態では、画像処理装置100として、タッチディスプレイを備えたスマートフォンを使用するものとする。画像処理装置100は、CPU(Central Processing Unit)102、ROM(Read Only Memory)103、RAM(Random Access Memory)104を備えている。さらに、2次記憶装置105、ディスプレイ106、マウス107、キーボード108、IF(InterFace)109、IF110、IF111、および内部撮像デバイス(撮像手段)112を備えている。
【0015】
CPU(プロセッサー)102は、以下で説明する各種処理をプログラムに従って実行する。
図1において1つのCPU102が示されているが、複数のCPUあるいはCPUコアによって構成されていてもよい。ROM103は、CPU102により実行されるプログラムを記憶している。RAM104は、CPU102によるプログラムの実行時に、各種情報を一時的に記憶するためのメモリである。
【0016】
2次記憶装置105は、ハードディスクまたはフラッシュメモリ等の記憶媒体である。2次記憶装置105は、ファイルおよび画像解析等の処理結果を保持するデータベース等のデータならびに各種プログラムを記憶する。ディスプレイ106は、各種処理を実現するための操作を受け付けるためのUI(ユーザーインターフェース)を表示したり、実行された処理の結果等の各種情報を表示したりする。ディスプレイ106は、不図示のタッチセンサを備えてもよい。ユーザはタッチ、スワイプ、ピンチ等のタッチ動作により、操作を入力するものとする。なお、UIとして、マウスや文字等を入力するキーボードを備えてもよい。
【0017】
内部撮像デバイス112は、撮像を行う。撮像によって得られた画像データは、所定の画像処理を経た後、2次記憶装置105に保存される。また、画像データは、IF110を介して接続された外部撮像デバイス113から取得され、2次記憶装置105に保存されてもよい。
【0018】
IF111は、インターネット115等のネットワークを介して外部装置(例えばプリンタ114やサーバ116)と通信を行うことができる。
【0019】
IF109~111は、有線通信または無線通信の少なくともいずれかの通信形態を有するインタフェースであり、利用する通信形態に応じて外部装置との通信を行う。画像処理装置100は、IF109~111を介して、インターネット115に接続されたサーバ116または外部撮像デバイス113から画像データを取得したり、プリンタ114に対して画像データ(印刷データ)等を出力したりすることができる。有線通信には、例えば、USB、イーサネット(登録商標)等がある。無線通信には、無線LAN、NFC(Near Field Communication)、Bluetooth(登録商標)、赤外線通信等がある。
【0020】
画像処理装置100が備える各種構成要素は、内部バス101を介して相互に接続され、CPU102は、内部バス101を介して、各種構成要素を制御する。なお、本実施形態では、画像処理装置100が、CPU102(制御部)によって実行されるプログラム等のソフトウェアの実行場所(ソフトウェア実行環境)となる。
【0021】
なお、
図1の形態では、外部装置の一例としてプリンタ114を例に挙げて説明するが、これに限定するものでは無く、複合機(MFP)など他の画像形成装置やFAX等の通信装置であってもよい。
【0022】
<プリンタのハードウェア構成>
図2は、プリンタ114のハードウェアの一部を示す模式図である。本実施形態では、インクジェット方式のプリンタ114を例に挙げて説明するが、これに限られるものではなく、電子写真方式のプリンタであってもよい。
【0023】
図2に、本実施形態に係るプリンタ114の記録ヘッドの模式図を示す。記録ヘッド201は、インクを充填したインク部202を搭載する。
図2においてインク部202は、4色である形態を示しているが、何色でも良い。制御回路部203は、記録ヘッド201を駆動するために必要な記憶部、演算部及び通信部を含む。記録ヘッド201は、制御回路部203から記録信号と制御信号とを受信し、制御信号に従って記録信号に基づいたインクの吐出を行う。記録媒体である印刷媒体204は、不図示の搬送ローラによって搬送され、印刷媒体204上に画像が形成される。
【0024】
図3は、制御回路部203の構成例を示すブロック図である。制御回路部203は、入力インタフェース301、CPU302、出力インタフェース303、ROM304、RAM305を含む。入力インタフェース(IF)301は、プリンタ114の外部の画像処理装置等から、画像データと記録ヘッド201を駆動するための制御信号との入力を受け付ける。入力インタフェース301は、入力を受け付けた画像データと制御信号とをRAM305およびCPU302に送る。CPU302は、不揮発性メモリであるROM304に記憶されている制御プログラムを実行して、画像データに信号処理を行う。信号処理された画像データは記録データとして制御信号とともに、出力インタフェース303から出力される。出力された記録データと制御信号とにより記録ヘッド201が駆動され、印刷媒体204に画像が印刷される。
【0025】
<システム構成>
図4は、画像処理装置100で動作するアプリケーション400と、プリンタ114とを含む画像処理システムの構成例を示すブロック図である。アプリケーション400は、表示処理部401、画像取得部402、付加情報取得部403、印刷設定部404、印刷データ生成部405、データ送受信部406、および付加情報読み取り部407としての機能を実現するためのソフトウェアである。アプリケーション400は、上記部分以外の機能を実現するものであってもよい。アプリケーション400は、
図1におけるROM103または2次記憶装置105にプログラムとして格納されており、CPU102により実行されることにより実現される。すなわち、CPU102がROM103または2次記憶装置105に格納されているプログラムを実行することにより、CPU102がアプリケーション400の各部として機能する。アプリケーション400は、印刷対象の画像データと、入力された付加情報とに基づいて付加情報が埋め込まれた画像データを生成する機能を備えている。そして、アプリケーション400は、生成した画像データを印刷するための印刷データをプリンタ114に送信する機能を備えている。
【0026】
プリンタ114は、印刷処理部408、データ送受信部409を備えている。印刷処理部408およびデータ送受信部409は、CPU302がROM304に格納されたプログラムを実行することによって実現される。
【0027】
図5は、画像処理装置100上で動作するアプリケーション400の画面の一例を示す図である。以下、
図4の各ブロックで行われる処理を、
図5に示す画面例を参照しながら説明する。
【0028】
表示処理部401は、付加情報として埋め込む文字情報および印刷処理に利用する画像などを画像処理装置100のディスプレイ106に表示させる処理を行う。表示処理部401は、画像および文字等を選択するボタン並びに印刷設定のリスト等、ユーザーインターフェイス(UI)に関わる情報を表示させる機能も有している。
【0029】
図5では、画像処理装置100のディスプレイ106に、画像選択ボタン501、埋め込み情報設定ボタン502、印刷設定ボタン503が表示されている。コンテンツ編集エリア500には、編集中のコンテンツ(画像)が表示されている。
【0030】
画像取得部402は、付加情報が埋め込まれる対象となる画像を取得する。例えば
図5の画像選択ボタン501が選択されると、画像選択ダイアログが立ち上がり、画像処理装置100において利用可能な画像をユーザが選択することができる。なお、本実施形態では、画像選択ダイアログからの画像選択を行うが、別途、内部撮像デバイス112を起動して、撮像した画像を利用する形態でも良い。画像取得部402が取得した画像は、コンテンツ編集エリア500に表示され、タッチ、スワイプ、ピンチ操作により、拡大・縮小・回転や移動をすることができる。その他、任意の編集が行われてよい。
【0031】
図6は、埋め込み情報設定のダイアログ600の一例を示す図である。
図5の埋め込み情報設定ボタン502が選択されると、ディスプレイ106には、
図6に示す埋め込み情報設定のダイアログ600が表示される。付加情報取得部403は、例えば
図6に示すような埋め込み情報設定のダイアログ600を通じて編集された情報を、付加情報として取得する。
図6のエリア601をユーザがタップすると、埋め込みたい情報(付加情報)の編集をユーザが行うことができる。例として「hello」という文字列を付加情報として埋め込むこととする。なお、本実施形態では、テキスト入力を例にしているが、画像に関する著作権、撮像日時、撮像場所、撮像者等の諸情報を付加情報として埋め込んでもよい。URL(Uniform Resource Locator)などのように、リンク先の情報を付加情報として埋め込んでもよい。音声や動画等のように、テキスト以外の情報を付加情報として埋め込んでもよい。共通のデータテーブルがある場合、そのデータテーブルのデータを識別する識別情報を付加情報として埋め込んでもよい。ユーザは、入力を完了した場合は、決定ボタン602を押下し、キャンセルする場合はキャンセルボタン603を押下する。なお、
図6で説明したようにユーザが埋め込みたい付加情報を意識的に入力する形態でもよいし、ユーザが意識しない形で付加情報をアプリケーション400が入力する形態でもよい。
【0032】
図7は、印刷設定ダイアログ700の一例を示す図である。
図5の印刷設定ボタン503が選択されると、ディスプレイ106には、
図7に示す印刷設定ダイアログ700が表示される。ユーザは、印刷設定ダイアログ700を通じて、プリンタの選択、用紙種別の選択、用紙サイズの選択、フチあり/なし印刷の設定を行う。プリンタ選択リスト701をタップすると、使用可能なプリンタのリストが表示され、ユーザは任意のプリンタを選択することができる。同様に、用紙種別リスト702をタップすると、使用可能な用紙種別のリストが表示され、ユーザは任意の用紙種別を選択することができる。用紙種別としては、例えば、光沢紙、マット紙、普通紙等が挙げられる。用紙サイズ選択リスト703をタップすると、用紙種別リスト702で選択されている用紙種別で使用可能な用紙サイズのリストが表示され、ユーザは任意の用紙サイズを選択することができる。印刷フチ設定704では、印刷時のフチ設定(フチあり/フチなし)を行う。フチあり印刷とは、印刷画像の四辺に余白ができる印刷方法であり、フチなし印刷とは、用紙に余白が生じないように印刷する印刷方法のことである。
【0033】
印刷ボタン705が押下されると、印刷設定部404は、印刷設定を印刷データ生成部405に送信し、印刷工程に移行する。キャンセルボタン706が押下されると、印刷を実行せずに前画面に戻る。
【0034】
なお、
図7の印刷設定ダイアログ700に表示されるプリンタの印刷設定に関する情報は、予め画像処理装置100に保持しておいてもよいし、ネットワークを通じてサーバ116やプリンタ114から適宜ダウンロードしてもよい。
【0035】
印刷データ生成部405は、コンテンツのレンダリング、付加情報の埋め込み処理、およびプリンタ114で印刷するために必要なデータの生成処理を行う。レンダリング処理では、画像取得部402で取得され、
図5のコンテンツ編集エリア500に表示されているコンテンツから印刷に用いる画像データを生成する。付加情報の埋め込み処理では、レンダリングで生成された画像データに、付加情報取得部403で取得した付加情報を埋め込む処理が行われる。
【0036】
本実施形態では、印刷データの生成に使用するコンテンツは、ウェブ標準言語(HTML(Hyper Text Markup Language)、CSS、JavaScript(登録商標)等)を用いて記述される。本実施形態ではHTMLにおけるグラフィック表記手法の一つであるSVG(Scalable Vector Graphics)を用いて、印刷に使用するコンテンツを記述した例を用いて説明を行う。しかしこれに限定するものではなく、例えば、HTMLでグラフィックを記述するのに使用されるCanvasを用いてもよい。
【0037】
図8は、本実施形態において印刷に使用するコンテンツを記述した例を示す図である。本実施形態では、画像を1枚のみ配置したコンテンツを例に説明する。この場合のSVGの記述例を
図8(a)に示す。
図8(a)のSVGの記述例は、概略を説明するためのものであり、細かい設定の記述は省略している。
図8の左端の数字は、行数を示している。
【0038】
図8(a)における1行目は、コンテンツがSVGによって記述されていること、および、SVGのサイズを記述している。2行目はコンテンツに追加された画像に関する記述である。本実施形態では、アプリケーション400は、1枚の画像のみのコンテンツを作成する形態であるものとして説明するが、これにテキストやスタンプを追加する形態でもよい。その場合は、追加したテキストやスタンプの情報がSVGによって記述される。
【0039】
次に、印刷データ生成部405が、SVGコンテンツのレンダリングを実行し、付加情報の埋め込み処理(多重化処理ともいう)を施して印刷データの生成を行うまでの処理を、
図9を用いて詳細に説明する。
【0040】
図9は、印刷データ生成部405で行われる印刷データ生成処理の一例を示すフローチャートである。なお、本明細書の説明において参照するフローチャートに記載のSは、ステップを意味する。
【0041】
まず、S901において印刷データ生成部405は、まず、印刷可能領域情報の取得を行う。印刷可能領域情報とは、印刷に使用される印刷メディア(用紙やディスクメディア等)において印刷可能な領域を規定する情報である。
【0042】
次に、S902において印刷データ生成部405は、用紙設定に応じたレンダリングサイズを決定する。用紙設定がL版、フチありで印刷解像度が300dpiであった場合、レンダリングサイズは950px(ピクセル)×1400pxとなる。なお、印刷設定として300dpi以外の印刷解像度が設定可能である場合、他の印刷解像度に対応するレンダリングサイズを決定する。例えば、上述のように用紙設定がL版、フチありで、印刷解像度が600dpiの場合、レンダリングサイズとして1900px×2800pxが算出される。
【0043】
S903において印刷データ生成部405は、コンテンツであるSVGの一部を、印刷のために書き換える。ここでは、S902で決定されたレンダリングサイズに合わせて、SVGの横幅および縦幅を、プリンタへ送信する画像サイズに合わせて変更する。具体的には、
図8(a)のSVGの2行目と3行目のwidthが「950」に、heightが「1400」に、2行目のviewBoxが「0 0 950 1400」に変更される。書き換えられたSVGの例を
図8(b)に示す。
【0044】
次に、S904において印刷データ生成部405は、画像処理装置100の不図示のOS(Operating System)に対して画面生成を要求する。ここでは、S903において書き換えられたSVGを参照して、950px×1400pxの領域の情報が取得される。そして、OSによって、SVG用の画面生成(950px×1400px)が実行される。SVGのサイズに関する情報は、SVG自体ではなく、アプリケーションが保持してもよい。また、OSが生成する画面は、オフスクリーン画面として生成される。オフスクリーン画面とは、UIには表示されない画面のことである。
【0045】
S905において印刷データ生成部405は、S904で生成された画面にSVGを描画するようにOSに対して要求する。OSは、SVGの情報をロードする。SVGの情報がロードできたタイミングで、アプリケーション400はOSからロード完了の通知を受け取る。この通知はOSに標準的に備わっている機能を利用すればよい。例えばiOSアプリケーションの作成で利用するObjective-C言語であればwebViewDidFinishLoad関数などがロード完了通知に該当する。また、Androidアプリケーションの作成で利用するJava(登録商標)言語であればonPageFInished関数などがロード完了通知に該当する。アプリケーション400は、ロード完了通知を受け取ると、SVGの描画が完了したと判定し、次のステップに進む。
【0046】
S906において印刷データ生成部405は、OSに対しコンテンツの画像データを要求する。ここでの画像データとは、オフスクリーン画面に表示されているコンテンツのRGBAデータのことである。端的にいえば、画面キャプチャを実行するということである。OSは、アプリケーション400からの要求に応じて、コンテンツが描画されたオフスクリーン画面の画面キャプチャを実行し、取得したRGBAデータをアプリケーション400へ送信する。
【0047】
S907において印刷データ生成部405は、取得したRGBAデータに対して付加情報を埋め込む処理を行う。付加情報は、視覚的に判別しにくいように画像中に埋め込まれる。付加情報の埋め込み処理では、付加情報取得部403で取得した付加情報を使用する。埋め込み処理の詳細については後述する。S906にてOSから取得したRGBAデータにはA(透過度)の情報が含まれている。本実施形態では、この透過度の情報は印刷には用いないので、削除してRGBデータとして付加情報の埋め込み処理が行われる。
【0048】
S908において印刷データ生成部405は、付加情報の埋め込み処理後のRGBデータをJPEG画像データへ変換する。なお、本実施形態では、画像データをJPEGに変換する例を説明するが、公知であるPDF(Portable Document Format)の技術を用いて、PDFのフォーマットに変換したデータを画像データとしてもよい。
【0049】
S909において印刷データ生成部405は、プリンタ114に送信するためのプリントコマンドを、S908で生成したJPEG画像データに付加する。ここで、JPEG画像データに付加するデータは、印刷設定の情報を基に生成される。また、必要であれば、プリンタ114を制御するためのコマンドを付加してもよい。
【0050】
図10は、印刷データのプリントコマンドの例を示す図である。ここでは、プリントコマンドとして、XML形式で記述されたコマンドを使用する。
図10の例えば3から5行目では、「L版サイズの光沢紙に対して標準モードで印刷する」というプリンタ用の設定が記述されている。また、7から9行目で、印刷データは「横幅950px、縦幅1400pxのJPEGデータ」ということが記述され、10行目に、S909で変換されたJPEGデータが挿入される。
【0051】
プリンタ114は、画像データ(JPEGデータ)と共に上述のようなプリントコマンドを受け取ることで印刷を実行する。以上のステップにより、印刷データ生成部405で行われるレンダリング処理、付加情報の埋め込み処理、および印刷データの生成処理が終了する。
【0052】
図4の説明に戻る。画像処理装置100側のデータ送受信部406は、印刷データをプリンタ114に送信する。アプリケーション400は、OSに対して印刷データの送信を要求し、OSはアプリケーションから受け取ったデータをプリンタ114へ送信する。データの送信は、例えば画像処理装置100とプリンタ114とを無線の電波で接続する公知の無線WiFi技術を用いて行われる。データの送信方法に関しては、その他公知の方法を用いても構わない。例えば、画像処理装置100とプリンタとをUSBポートで接続する。画像処理装置100側では、プリンタドライバにより、プリンタで印刷可能なラスターデータに変換する。この印刷可能なラスターデータをUSBポートでプリンタに送信してもよい。プリンタ側は、受け取ったラスターデータを、印刷可能なデータに変換し、印刷を行う形態でもよい。
【0053】
次に、プリンタ114側の処理について説明をする。プリンタ114側のデータ送受信部409は、画像処理装置100から送信される印刷データを受信する。データ送受信部409は、受信した印刷データに含まれるプリントコマンドを解析し、解析した用紙サイズおよび用紙の種類などの印刷設定情報を印刷処理部408に送る。また、データ送受信部409は、印刷データに含まれるJPEGファイルを復号化処理して画像データに変換し、変換後の画像データを印刷処理部408に送る。ここで、通常の印刷時には、印刷設定情報に補正処理情報が含まれている場合は、画像データに対して画像補正処理を実行することがある。画像補正処理としては、明度調整や、コントラスト調整、カラーバランスの調整のほか、写真印刷を想定した逆光補正や赤目補正など、様々なものが挙げられる。しかし、付加情報が埋め込まれた画像を印刷する場合においては、画像処理によって、埋め込まれた情報が消失あるいは信号が弱くなる恐れがあるため、画像補正処理は実行しないものとする。上述した画像補正処理を実行したい場合は、アプリケーション400で印刷データを生成する前に(つまり、付加情報を埋め込む前に)実行することが望ましい。
【0054】
印刷処理部408は、データ送受信部409から受け取った画像データを、プリンタで出力させる際に好適な色となるように色分解し、インク色データに変換する。インク色データに変換する方法は、画面表示に利用する画像フォーマット(RGB)から、印刷用のインク色(CMYK)に変換する公知の色変換処理であれば、いずれの方法であってもよい。
【0055】
例えば、プリンタ114のインク色として、シアン(C)、マゼンタ(M)、イエロー(Y)、ブラック(K)の4色を想定する。印刷処理部408は、入力されたレッド(R)、グリーン(G)、ブルー(B)の3色から成るデータを、C,M,Y,Kの4色のインク色データに変換する。変換を行う場合は、色分解テーブルを用いる。色分解テーブルは、R,G,Bの3つの値を入力すると、C,M,Y,Kのインク色の値に変換できる3次元のルックアップテーブルである。印刷処理部408は、入力された画像データの画素毎に、色分解テーブルを利用して、R,G,Bの値をC,M,Y,Kのインク色の値に変換する。
【0056】
印刷処理部408ではさらに、出力階調補正やハーフトーニングといった画像処理をルックアップテーブルなどの画像処理パラメータを用いて行い、インク色データを印刷出力用データに変換する。
【0057】
変換された印刷出力用データは、
図2の制御回路部203に送られる。制御回路部203は、印刷出力用データに従って印刷媒体204にインクを吐出し、画像を形成する。このように形成された印刷画像には、付加情報が埋め込まれている。以上のステップにより、印刷データの印刷処理が終了する。
【0058】
アプリケーション400の付加情報読み取り部407は、付加情報が埋め込まれた印刷画像から、付加情報を読み出して抽出する処理を行う機能を持つ。付加情報の抽出処理の詳細については後述する。なお、
図4の例では、アプリケーション400が付加情報の埋め込みと読み出しとの両方を行う形態を示したが、付加情報の埋め込みと読み出しとが別々のアプリケーションで行なわれてもよい。
【0059】
<付加情報の埋め込み処理>
以下では、アプリケーション400で行われる、レンダリング後の画像データに対して付加情報を埋め込む処理を説明する。
図11は、付加情報の埋め込み処理を説明するフローチャートであり、
図9のS907の詳細を説明する図である。
図11に示す処理は、アプリケーションの印刷データ生成部405で行われる。
【0060】
S1101において印刷データ生成部405は、付加情報をバイナリデータに変換する。ここでは、付加情報として、「hello」という文字列が入力された場合を例に挙げて説明する。バイナリデータとは、「0」または「1」の情報であり、これらが連続でつながることにより、特定の意味を持つようになる。バイナリデータと文字との対応は、「文字コード」と呼ばれるもので定義されている。例えば、文字コードの一つである「シフトJIS」を例にとると、「h」はバイナリデータの「01101000」に対応している。同様に「e」は「01100101」、「l」は「01101100」、「o」は「01101111」というバイナリデータに対応している。
【0061】
つまり「hello」という文字はバイナリデータで「0110100001100101011011000110110001101111」と表現できる。逆に「0110100001100101011011000110110001101111」というバイナリデータを取得できれば「hello」という文字を取得することができる。つまり、「0」または「1」を判定できるようにデータを埋め込むことで付加情報の埋め込みが実現可能である。
【0062】
図12は、画像に対して「0」または「1」の情報を埋め込む方法を説明する図である。ここでは、「0」、「1」を生成するために
図12(a)および(b)の二つのパターンを考える。例えば
図12(a)のパターンが「0」を表し、
図12(b)のパターンが「1」を表すものとする。
図12(a)および(b)のパターンは、8px×8pxで構成されている。各パターン内の一つの矩形が1pxを表している。印刷データ生成部405は、これらのパターンに従って「0」および「1」のバイナリデータで構成されている付加情報を画像に埋め込む。これにより、画像内の8px×8pxの領域に対して周期性を持ったパターンを与えることができる。
【0063】
画像へのパターンの埋め込み方法としては、例えば、直接RGBの値(輝度情報)に、周期性を重畳する方式が考えられる。他の方法としては、RGBの値を、輝度-色差情報など、他の色空間情報(例えばCIE L*a*b*、YCrCb信号)に分離して周期性を重畳する方式により埋め込みを実現してもよい。または、RGBの値をインク色(例えばCMYK信号)に分離して周期性を重畳する方式により埋め込みを実現しても良い。本実施形態では、簡単のため、RGB成分のB成分に周期性を重畳する方法を例に挙げる。
図12(a)および(b)のハッチングされたピクセル(px)部分に対して、B成分を30減算するものとする。より好ましくは、減算だけでなく、加算する部分もあったほうがよい。減算と加算が等量あるパターンにすることで、画像への付加情報を埋め込んだ後の違和感が軽減される。
図12(c)および(d)に、減算と加算を含むパターンを示す。薄いハッチング部分が、加算部分である。このように、付加情報が埋め込まれる対象の画像のRGBデータのうち、所定のパターンに沿って所定の成分の値を加工することで付加情報の埋め込みが行われる。なお、本実施形態では、元画像に対して周期的なパターンを直接埋め込む方法をとったが、それ以外の方法をとっても良い。例えば、周波数空間においてパターンの周波数に相当する箇所に信号を埋め込んだ後、フーリエ逆変換で得た画像を元画像に対して加減算する形態を取っても良い。あるいは、一旦、画像全体あるいは一部をフーリエ変換で周波数空間に変換し、パターンの周波数に相当する箇所に信号を埋め込んだ後、フーリエ逆変換で得た画像を埋め込み画像とする形態をとっても良い。
【0064】
図13は、本実施形態で使用する付加情報の単位ブロック(多重化ブロック)を表す図である。ブロック1300が1つの単位ブロックを表しており、この単位ブロック内の全情報を読み取ることで埋め込まれた付加情報を取り出すことができる。単位ブロック1300はマーカ部1301とデータ部1302とで構成されている。マーカ部1301は付加情報の読み取りの際に単位ブロック1300の位置を特定するために利用される80×80pixelのブロックで、マーカ部を表す情報が埋め込まれている。マーカ部1301を表す情報として、例えば
図12(a)および(b)の両方の組み合わせから成る特定のパターンを付加し、このパターンを読み取りの際に検出することでマーカ部1301の検出を行うことができる。他の方法としては、
図12(a)および(b)とは異なる周期性や周期の方向を持つパターンでマーカ部1301を構成することも考えられる。
【0065】
データ部1302は、
図12(a)または
図12(b)であるパターン1303(すなわち、「0」か「1」を表すパターン)が敷き詰められている。本実施形態の単位ブロック1300は240×240pixelで構成されており、データ部1302にはパターン1303が800個入っている。パターン1303が1つで1ビットの情報を表すことができるため、ブロック1300全体では800ビットの情報量があることになる。
【0066】
なお、本実施形態では、単位ブロック内のマーカ部1301は、単位ブロック1300の左上に配置しているが、右上や中央等、それ以外の位置に配置してもよい。また、マーカ部1301は、矩形以外の形状でもよいし、単位ブロック内に分散して配置されていてもよい。
【0067】
図14は、印刷媒体(印刷物)204に単位ブロック1300が繰り返し埋め込まれている様子を示す図である。つまり、同じ付加情報を表す単位ブロック1300が、印刷媒体204の全面に繰り返し埋め込まれている様子を示している。
図14の印刷設定は、L版、300dpi印刷、フチあり印刷とする。S902における処理により、この場合の印刷画像サイズは、横幅950px、縦幅1400pxとなる。印刷画像サイズが950×1400なので、240×240の単位ブロック1300を、3×5=15ブロック敷き詰めることが可能である。印刷媒体204に埋め込まれた付加情報を読み出すには、この繰り返し埋め込まれた複数の単位ブロック1300のうち、1つ分のデータ部の読み出しができればよい。なお、同じ情報(単位ブロック1300)を印刷媒体204の全面に多く埋め込むことで、読み取り時のロバスト性を高めることができる。ある単位ブロック1300では、付加情報を読み出すことができないものの、他の単位ブロック1300を参照することで、付加情報を読み出すことが可能になる場合があるからである。なお、ここでは同じ情報(単位ブロック1300)を繰り返し埋め込む場合を例に挙げているが、これに限定されない。異なる情報(異なる内容のブロック)を、画像の全面に埋め込む場合でもよい。
図14では、印刷媒体の右部分と下部分にはブロックサイズが足りないエリアが存在するが、このエリアにもブロックの一部が埋め込まれている。
【0068】
図11の付加情報の埋め込み処理のフローチャートの説明に戻る。付加情報(文字列)のバイナリ化が終了するとS1102に進む。
【0069】
S1102において印刷データ生成部405は、単位ブロックの配置を決定する。印刷データ生成部405は、印刷画像の左上を起点に、単位ブロックを敷き詰める。
図14は、印刷画像の左上を起点として単位ブロックを配置した例を示している。
【0070】
S1103において印刷データ生成部405は、決定したブロック配置で画像に付加情報の埋め込みを行う。付加情報の埋め込みは、対象の画像と
図14のブロック配置とを対応付けながら、各画素に対して
図12のパターンを重畳することにより行う。具体的には、
図14の各ブロック内のデータ部は、
図12(a)のパターンまたは
図12(b)のパターンから構成されているため、各パターンのハッチング部に対応する画素のRGBのB値を30減算する。B値が0を下回る場合は、0とする。これを画像全体に適用することにより、画像への付加情報の埋め込みが完了する。
【0071】
以上、画像に付加情報を埋め込んでプリンタで印刷するまでの処理を説明した。次に、付加情報が埋め込まれた印刷画像を読み取る処理について説明する。
【0072】
<付加情報の読み取り処理>
付加情報の読み取り処理は、
図4におけるアプリケーション400の付加情報読み取り部407によって実施されるが、埋め込みを行ったデバイスとは別のデバイスのアプリケーションで読み取りを実施してもよい。
【0073】
図15は、付加情報読み取り部407の構成を示すブロック図である。画像処理装置100のアプリケーション400に含まれる付加情報読み取り部407は、画像取得部(第1取得手段)1501、距離情報算出部(第2取得手段)1502、あおり補正部1503、および付加情報取得部(抽出手段)1504を備えている。
【0074】
まず、画像取得部1501は、内部撮像デバイス112を制御して、付加情報が埋め込まれた印刷画像の撮像を行い、画像データを取得する。撮像によって得られた画像データ(以下、撮像画像データと称す)は、静止画のデータでもよいし、動画から各フレームを抜き出した静止画像のデータを使用してもよい。撮像画像データは、距離情報算出部(距離情報の取得手段)1502に送られる。本実施形態では、撮像画像データは、RGB形式の8ビットデータとして取得されるものとする。また、撮像画像データのサイズは、1080×1920(2Kサイズ)が得られるものとする。
図16に、撮像画像の例を示す。
【0075】
距離情報算出部1502では、
図16の撮像画像データ1601内に設定した複数のエリアを周波数解析し、エリア毎に距離情報を算出する。距離情報とは、スマートフォン100の内部撮像デバイス(撮像手段)112と印刷画像との相対的な距離を示す情報である。
【0076】
本実施形態では、
図16の撮像画像データ1601に含まれる4つのエリア1602~1605をトリミングエリアとし、各トリミングエリアに対応する撮像画像データの切り取りを行う。すなわち、撮像画像データからトリミングエリアに対応する画像データ(以下、部分画像データという)を取得する。各トリミングエリアは、256px×256pxのサイズの正方形のエリアとなっている。なお、以下の説明において、4つのトリミングエリア1602~1605のそれぞれを、Aエリア、Bエリア、Cエリア、Dエリアともいう。
【0077】
4つのトリミングエリア1602~1605は、撮像画像データ1601の中で、次のような位置に設定する。すなわち、矩形(長方形)の撮像画像データ1601の中心1601aと頂点1601bとを結ぶ直線上に、各トリミングエリア1602、1603、1604、1605の中心A1、B1、C1、D1が一致するように、各トリミングエリアの位置を設定する。さらに、本実施形態では、各トリミングエリアの中心A1、B1、C1、D1を、撮像画像データ1601の中心1601aと頂点1601bとの中央付近に位置するように設定している。これにより、有効な距離情報を取得することが可能になる。
【0078】
トリミングエリアで距離情報の算出を行うためには、トリミングエリア内に印刷画像の画像データ(印刷画像データ)が含まれることが必要となる。トリミングエリアに対応する部分画像データから距離情報を取得する処理が行われるからである。これに対し、トリミングエリアの位置を頂点1601bに近い位置に設定した場合、印刷画像からスマートフォン100を離して(引きで)撮像したときに、トリミングエリア内に印刷画像データが含まれず、距離情報を取得できないことがある。また、トリミングの位置が撮像画像データの中央に近い位置にあると、4つのトリミングエリアの距離情報に差が生じにくくなり、有効な情報とはならない。すなわち、後述の撮像手段と印刷画像との相対的な傾きを求める処理は、各トリミングエリアの距離情報の差を用いて行うため、各エリアの距離情報に差が生じない場合にはそれらが有効な情報にはならない。このような理由から、本実施形態では、撮像画像データの中心と頂点の中央付近にトリミングエリアの中心を設定している。
【0079】
ここで、距離情報を算出する処理を
図17のフローチャートに沿って説明する。
図17において、距離情報算出部1502は、まず、撮像画像データの中の複数のエリアから画像データを切り取るトリミング処理を行う(S1701)。本実施形態では、
図16の撮像画像データ1601に含まれる4つのエリア(Aエリア~Dエリア)1602~1605をトリミングエリアとし、1番目(i=0)のトリミングエリア(例えばAエリア)に対応する部分画像データの切り取りを行う。なお、iはトリミングを行う回数のカウント値を示し、S1700では初期値として、i=0を設定している。
【0080】
次に、S1702では、距離情報算出部1502は、S1701のトリミング処理によって取得した空間領域の部分画像データを、空間周波数領域の画像データに変換する。本実施形態では、この画像データの変換に、2次元の高速フーリエ変換(FFT(fast Fourier transform))を使用する。FFTのアルゴリズムについては公知の技術を使用する。
図18(a)に、内部撮像デバイス112によって得られた撮像画像データの部分画像データを、空間周波数領域に変換して得られる空間周波数画像データ(FFT画像データ)の例を示す。
図18(a)では、画像の中心を原点とし、横軸が水平方向(横方向)の空間周波数、縦軸が垂直方向(縦方向)の空間周波数をそれぞれ表しており、原点から遠ざかるにつれて高周波域となる。
【0081】
次に、S1703では、距離情報取得部1502は、S1702で得られたFFT画像データを使用して、距離情報の算出を行う。
図16に示した、印刷画像を撮像することによって取得される撮像画像データには、印刷画像に埋め込んだ
図12の2種類のパターン(例えば、
図12(a)に示すパターンと
図12(b)に示すパターン)が無数に含まれている。そのため、撮像画像データの一部をトリミングしたトリミング画像を空間周波数領域に変換すると、2つのパターンの波の方向と周波数に対応した部分にパワースペクトルのピークが発生する。FFT画像では、180°回転対称の部分にも同様にパワースペクトルのピークが生じるため、空間周波数領域では4つの点でパワースペクトルのピークが発生する。
図18(a)では、4つの点でピークが生じていることがわかる。
【0082】
図18(b)は、FFT画像から距離を検出する例を示している。内部撮像デバイス112と印刷画像との間に、印刷平面に沿った2次元の傾き(回転)が生じていない場合、
図12のパターンに対応したピークは、
図18(b)のライン1801と1802の上に発生する。ただし、ピークが発生する周波数は、撮像デバイスと印刷画像との間の距離によって変動する。例えば、距離が近い場合は低周波側にピークが発生し、距離が遠い場合は高周波側にピークが発生する。本実施形態において想定されている印刷解像度、撮像解像度、印刷物と撮像デバイスの距離によれば、
図12に示すパターンに相当する8px×8pxの画素群に相当する領域が撮像画像内で連続的に配列されることにより、周期性を有する。そのため、この領域の大きさが小さく、数が多いほど、高周波成分の強度が大きくなる。距離が遠い場合、上述の領域が小さく、また数が多くなるため、高周波側でピークが発生しやすくなる。従って、低周波側でピークが発生している場合には距離が近く、高周波側でピークが発生している場合には距離が遠いと判定することが可能である。
【0083】
図18(b)では、中心付近の低周波領域を除き、低周波側からa~fの6つのリング状の周波数エリアを設定している。ピークがこれらの周波数エリアの何れに含まれるかを判定することにより、撮像デバイスと印刷画像との距離Dを算出する。ピークが発生する周波数エリアの判定方法としては、例えば、次のような方法がある。まず、各周波数エリアに含まれる画素値の最大値を求める。次に、求めた最大の画素値の中で最も大きい値を示す画素値を含む周波数エリアをピークが存在する周波数エリアと判定する。このような判定方法以外に、各周波数エリアに含まれる画素の平均値を求め、最も平均値が大きい周波数エリアにピークが存在すると判定する方法をとることも可能である。
【0084】
撮像デバイスと印刷画像との距離Dを算出する式としては、例えば以下の式1が挙げられる。
【0085】
【0086】
ここで、rはリング状の周波数エリアの半径である。半径としては、リング状の周波数エリアの外径と内径の中央の径を用いる。
図18(c)のRadiusは、各周波数エリアの半径rの値を示している。式1では、
図12の8px×8pxのパターンが、等倍の撮像によって256px×256pxの領域に含まれていた場合の距離を1として換算した相対的な距離が求められる。すなわち、
図12のパターンは、256px×256pxの領域の中に64×√5/2cycleが含まれるため、半径r(周波数に相当)をこの周波数で除算することにより、相対的な距離を求めることができる。
図18(c)のDistanceに、式1によって求めた各エリアの距離の値を示す。なお、
図18(c)では、等倍撮像時の周波数エリアcの距離(Distance)を1として相対的な距離を算出した。しかし、周波数領域における半径rが、撮像デバイスと印刷物との距離に相当することがわかっているため、半径rをそのまま距離に相当する値として使用してもよい。また、リング状の周波数エリアの数を6としたが、周波数エリアの数は増減してもよい。
【0087】
ここで、再び
図17のフローチャートに戻る。S1704において、距離情報算出部1502は、AエリアからDエリアまでの全てのトリミングエリアの距離情報の算出が完了したか否かを判定する。ここで、算出が完了していないトリミングエリアが存在する場合には、S1705においてカウント値をインクリメントした後、別エリアの距離情報を算出するため、S1701から処理を実行する。S1704において全てのトリミングエリアに対する距離情報の算出が完了した(i=3)と判定すると、距離情報の算出処理を終了し、算出した距離情報をあおり補正部1503に送信する。
【0088】
あおり補正部1503では、距離情報算出部1502で算出された距離情報に基づき、内部撮像デバイス112で取得された撮像画像データのあおりの状態を取得し、そのあおりの状態に応じて撮像画像データの補正を行う。すなわち、あおり補正部1503は、あおり状態を取得する第3取得手段としての機能及びあおり状態を補正する補正手段としての機能を果す。
【0089】
ここで、あおりの状態について
図19を参照して説明する。
図19(a)は、あおりが発生していない状態で印刷画像を撮像したときの撮像画像を示している。実際には、印刷画像の全体が撮像されているとは限らず、一部のみが撮像されている場合もあるが、ここでは説明を簡略化するため、印刷画像の全体が撮像されているものとする。
【0090】
撮像画像にあおりが発生すると、
図19の(b)~(i)のいずれかの状態に印刷画像の形状が変化する。しかし実際には、スマートフォン100のディスプレイ106に表示される撮像画像から、あおりがどのような状態になっているかを判別することは困難な場合が多い。そこで、距離情報算出部1502で得られたAエリア~Dエリアの距離情報に基づき、あおり補正部1503があおりの状態を推定する。本実施形態では、あおりの状態を仮想的な台形により表現する。
【0091】
図20は、仮想台形の形状を算出する様子を示す図である。
図20(a)の太線の矩形2003は、内部撮像デバイス112で得られる1920×1080の画像サイズを表現している。これに対して、2001,2002,2004~2006に示す矩形は、矩形2003を拡大・縮小させた画像サイズを表現している。矩形2001~2006は、
図18(b)に示すリング状の周波数エリアa~fにそれぞれ対応しており、
図20に示す中心P0から各矩形の頂点までの相対的な距離がそれぞれ
図18(c)の距離(Distance)に対応する。リング状の周波数エリアcは、距離(Distance)が1であるため、太線の矩形2003と一致している。
【0092】
ここで、トリミングエリア(Aエリア、Bエリア、Cエリア、Dエリア)の距離情報の算出結果がそれぞれ0.818、0.818、1.286、1.286であった場合に行う補正処理を一例として説明する。この場合、
図20(b)の網掛け部に示す形状の仮想台形2007を推定する。そして、この仮想台形2007の形状が太線の矩形2000の形状になるように、印刷画像データの補正を行う。補正には、矩形画像の歪みを補正するために一般的に用いられる、台形補正(射影変換またはホモグラフィとも呼ぶ)を使用する。台形補正には、補正前の4つの点の座標値と、それらに対応する補正後の4つの点の座標値が必要である。そこで、この台形補正に必要な8点の座標値の導出方法について以下に説明する。
【0093】
補正後の4つの点を、太線の矩形2003の頂点とし、各頂点PA(XA,YA)、PB(XB,YB)、PC(XC,YC)、PD(XD,YD)の座標値を、PA(0,0)、PB(1080,0)、PC(0,1920)、PD(1080,1920)とする。なお、ここで用いる座標値は、矩形2003で表される画像の頂点PAを基準座標(原点)として説明する。
【0094】
また、補正前の座標値の算出方法については、Aエリアを例に説明する。補正前の座標値は、補正後の矩形2003の中央座標(540,960)と頂点の座標値(XA,YA)をもとに補正前の頂点PA’のXY座標値(X’A,Y’A)を算出する。
【0095】
補正後の頂点座標値(XA,YA)からの補正前の頂点A’(XA’,YA’)のオフセット量(OX,OY)は、中央座標と頂点座標値および距離Dを用いて、以下の式で表すことができる。
OX=(1-D)×(540-XA)
OY=(1-D)×(960-YA)・・・(式2)
【0096】
また、補正前の頂点A’の座標値は、以下の式で表すことができる。
XA’=XA+OX
=0+(1-0.818)×(540-0)=98.28
YA’=YA+OY
=0+(1-0.818)×(960-0)=174.72・・・(式3)
【0097】
上記計算式により算出された、エリアAの補正前座標値は小数点以下を四捨五入し、(98,175)となる。また、B、C、Dエリアの補正前座標についても、同様の計算式によって算出することができる。
【0098】
そして、補正前の4点の座標値と補正後の4点の座標値とを使って、画像データの台形補正を行う。なお、
図20(b)では、Cエリア、Dエリアの補正前の座標は矩形2003で表される画像データの外側にある。そのため、台形補正時は矩形2003よりも大きいサイズの画像を用意し、変換を行う必要がある。その場合の画像サイズは、
図20(a)の2002のサイズとなる。矩形2003の画像データの外側には、もともと画像がないため、例えばRGB=(0,0,0)の黒画素で埋めておく必要がある。
【0099】
台形補正によるあおり補正処理を施した画像データが得られると、補正後の画像データを付加情報取得部1504(
図15参照)に送る。
【0100】
付加情報取得部1504では、あおり補正を行った後の画像データ(補正画像データ)から付加情報の取得を行う。付加情報の取得にはいくつかの段階がある。まず、付加情報が埋め込まれている位置の検出を行う。具体的には、画像データの空間周波数特性を解析することにより埋め込み位置の検出を行う。
【0101】
本実施形態では、
図12(a)と(b)または
図12(c)と(d)のような2種類のパターンを印刷画像に埋め込んでいる。埋め込み方法としては、例えば
図12(a)、(b)に示すようにRGBのB成分に30の減算を行っている。これにより、
図12(a)のパターンおよび
図12(b)のパターンは特定の2つの方向に大きなパワースペクトルを発生させる。これは、
図18(a)、(b)を見ても明らかである。付加情報取得部1504は、
図12に示す8px×8pxの領域に発生するパワースペクトルを検出することにより、「0」と「1」のデータ抽出を行う。なお、検出の前処理として、エッジ検出やシャープネスをかけることにより、パワースペクトルの強調を行うことも可能である。
【0102】
周波数解析によるデータの抽出では、撮像画像データからの解析エリアの正確な切り出しが必要となる。特に、スマートフォンによる撮像の場合、撮像距離が一定でないことから、距離を補正して、
図12の8x8のパターンを正確に切り出す処理を行うことが必要となる。本実施形態では、距離情報算出部1502の結果を使用して、あおり補正部1503であおりの補正を行うと同時に、距離の補正を行っている。そのため、付加情報取得部1504における距離の補正は不要である。
【0103】
次に、座標位置のずれを補正する処理が行われる。例えば、印刷画像内からの8px×8pxの領域の切り出しと、周波数解析と、を1pxずつずらしながら縦横に繰り返し、横8px×縦8pxの計64回の処理を繰り返して、最もスペクトルが強くなる箇所を切り出しの基準位置とする方法がある。
【0104】
位置検出が完了すると、付加情報の抽出(分離)を行う。
図13の例で説明すると、付加情報の抽出は、まず特定のバイナリパターンから成る単位ブロック1300のマーカ部1301を検出した後、マーカ部1301の位置を基準としてデータ部1302からのデータ読み出しを行う。読み出し時には、1つの単位ブロックでは一部分しか読み取りができない場合があるが、その場合は読み取りができなかった部分のデータを、他の単位ブロックのデータで補ってデータを完成させてもよい。すなわち、付加情報の抽出は、第1の単位ブロックで第1の部分のデータを抽出し、第1の単位ブロックとは別の第2の単位ブロックで、第1の部分以外の第2の部分のデータを抽出することによって行ってもよい。
図13の例では、データが完成すると、800ビット分の「0」、「1」の数列が得られる。
【0105】
付加情報の分離が完了した後は、付加情報として抽出した数値列に対して、データを解析し、埋め込んだ付加情報の形式に変換する処理を行う。例えば、予め埋め込む対象の付加情報を、テキスト文書データとして、文字コードを「シフトJIS」で数値化した値としておく。シフトJISの1バイトコード(半角文字)では、上位4ビットと下位4ビットの組み合わせで、数値及び文字に対応した変換を行うことができる。例えば、上位4ビットが「0100」で、下位4ビットが「0001」の場合、文字列として、「A」と判定される。このように、変換マップを予め保持しておき、数値列を対応させることで、文字へと変換することができる。
【0106】
付加情報として抽出した数値列は、
図1のRAM104に一時的に保持しておき、2次記憶装置105に予め保持しておいた「シフトJIS」変換マップを参照できるようにしておく。
【0107】
仮に、付加情報抽出部1702で抽出した付加情報の数値列が、「0110100001100101011011000110110001101111」とする。この場合、変換マップに対応させると以下のようになる。
・上位4ビット「0110」、下位4ビット「1000」で、文字「h」
・上位4ビット「0110」、下位4ビット「0101」で、文字「e」
・上位4ビット「0110」、下位4ビット「1100」で、文字「l」
・上位4ビット「0110」、下位4ビット「1100」で、文字「l」
・上位4ビット「0110」、下位4ビット「1111」で、文字「o」
【0108】
従って、文字列の「hello」となる。抽出された文字列は、例えば
図4の表示処理部401でディスプレイ106に表示される。また、抽出された文字列が、URLである場合にはネットワークに接続し、ブラウザを利用してディスプレイ106に、URL先の画面を表示する。また、そのURLが動画サイトであった場合、ディスプレイ106で動画を表示して、不図示のスピーカで、音声を流すこともできる。以上により、付加情報の読み取り処理を終了する。
【0109】
本実施形態では、撮像画像の複数エリアを周波数解析し、距離情報を取得した後、該距離情報を使用して撮像画像に生じているあおりの補正を実施し、補正した画像から付加情報の読み取りを行う。このため、印刷画像と撮像デバイスとの間で相対的なあおりが発生していても、正確に付加情報を読み取ることが可能になる。また、本実施形態によれば、視覚的に判別されにくい付加情報を用いてあおりの状態の取得や補正を行うことが可能であり、印刷画像の中にマーカなどの可視画像を印刷する必要がない。このため、印刷画像の品質や意匠性が損なわれることもなく、良好な画像情報を取得することが可能になる。
【0110】
(第2実施形態)
次に、本発明の第2実施形態を説明する。なお、本実施形態においても
図1ないし
図8に示す構成を備えるものとする。上記の第1実施形態では、撮像画像データに発生している2次元の傾き(あおり)状態を取得し、そのあおり状態に基づいて、スマートフォン100のあおり補正部1503が撮像画像データのあおり補正を行う例を示した。これに対し、第2実施形態では、情報処理装置であるスマートフォン100では、あおりが発生した状態にある画像の補正を行わず、スマートフォン100を操作しているユーザに対してディスプレイ106によってあおりの発生状態を通知させる通知制御を行う。すなわち、本実施形態においても、第1実施形態と同様に、撮像画像の複数エリアを周波数解析して距離情報を取得し、その距離情報を使用してあおり状態を取得するが、あおり状態に基づく撮像画像データの補正は行わない。本実施形態では、あおりの発生状態をディスプレイ106に表示することで、ユーザに対し、スマートフォンの撮像時の姿勢の変更及び調整を促す。
【0111】
図21に、印刷画像の読み取りにおいてあおり発生時に行われる通知例を示す。
図21(a)は、読み取りを開始する際にスマートフォン100のディスプレイ106に表示される表示画面の例を示している。この場合、スマートフォン100のディスプレイ106には、読み取りガイド2101と、ユーザ向けメッセージ2102が表示されている。
【0112】
図21(b)は、印刷画像の読み取り動作中に表示される表示画面の例を示している。図示の例では、撮像画像の読み取り動作が進行されている状況を、文字によるメッセージ2104とインジケータ2105とによりユーザへの通知を行っている。
【0113】
図21(c)は、撮像画像にあおりが発生したときに行われるユーザへの通知例である。ここでは、「あおりが発生しています。正しい姿勢で読み取ってください。」というメッセージ2107とともに、あおり状態を表す説明
図2108が表示されている。このディスプレイ106によって、あおりの発生の通知を受けたユーザは、スマートフォン100の姿勢を変え、印刷画像と正対した状態で読み取ることで、正しくデータを読み取ることが可能となる。なお、ユーザの端末が現在どのような状態になっているのか、イメージを掴んでもらうためにも、あおり状態に応じて、ユーザに通知する図を変化させるようにすることが望ましい。
【0114】
また、あおりの発生状態を示す表示方法として、
図21(d)、(e)に示すような、あおり通知用の指標2110を表示画面に配置し、指標2110の表示状態によってユーザにあおりの状態を通知する形態をとってもよい。
図21(d),(e)の例では、スマートフォン100のディスプレイ106の角部近傍の4箇所にスマートフォン100の姿勢の状態を示す指標2110が設けられている。そして、この4箇所に設けられた指標2110の表示を、それぞれの箇所と撮像画像との距離に応じて変化させる。これによりスマートフォン100の姿勢を正すために、スマートフォン100の各箇所をどのような位置に移動させればよいかをユーザに示すことができる。
図21(d)に示す例では、スマートフォン100の上側を印刷画像に近づけ、下側を印刷画像から遠ざける方向に動かすことでスマートフォン100の姿勢を正しい姿勢に近づけることができる。同様に、
図21(e)の例では、スマートフォンの右上を近づけ、左下を遠ざけることにより、スマートフォンの姿勢を正しい姿勢に近づけることが可能になる。
【0115】
なお、
図21では、あおりの発生状態をディスプレイに表示させる例を示したが、あおりの発生状態を音声メッセージによって通知するようにすることも可能である。
【0116】
以上のように、本実施形態では、撮像画像の複数エリアを周波数解析し、撮像画像と内部撮像デバイス112との距離を示す距離情報を算出した後、その距離情報を使用してあおり状態を取得し、取得したあおりの状態をユーザに通知することができる。このため、印刷画像と撮像デバイスとの間で相対的なあおりが発生した場合にも、ユーザは通知内容に基づいてスマートフォン100を正しい姿勢に変更することが可能となり、付加情報を適正に読み取ることが可能になる。また、本実施形態では、あおりの状態を補正する補正処理が不要となり、第1実施形態に比し、処理を簡略化することが可能になる。
【0117】
(第3実施形態)
次に、本発明の第3実施形態を説明する。上記第1実施形態では、スマートフォン100と印刷画像との間で発生する3次元の傾き(あおり)を補正する例を説明した。しかし、スマートフォン100と印刷画像との間には、画像が形成されている印刷平面に沿った2次元の傾き(回転)が発生する場合もある。スマートフォン100と印刷画像との間で2次元の傾き(回転)が生じていた場合、
図18(a),(b)に示すパワースペクトルのピークの位置に回転が生じる。すなわち、
図18(b)に示すライン1801と1802に回転が生じる。この場合、第1実施形態と同様に、リング状の周波数エリアを使用して距離の検出を行い、あおり補正を実施することは可能である。しかし、付加情報取得部1504での付加情報の取得に失敗する可能性がある。
【0118】
付加情報の取得を正しく行うためには、上記回転の角度を算出し、ピーク位置が
図18のライン上に乗るように撮像画像を回転補正する必要がある。以下、撮像画像の回転補正の方法について、具体的に説明する。
【0119】
図22は、回転情報の算出例を示す図である。ここでは、
図18(b)の空間周波数領域において、リング状の周波数エリアcでパワースペクトルのピークが検出された場合を考える。この場合、リング状の周波数エリア2203を所定の角度毎に分割した角度領域を設定する。
図22に示す例では、10°毎に9つの角度領域φa~φiに分解し、それぞれの角度領域でラベル付けを行う。すなわち、2次元の傾き(回転)が生じていない場合、周波数エリア2203におけるパワースペクトルの4つのピークは、角度領域φaに現れる。ここで、角度領域φaの方向にあるライン2201、2202は、それぞれ、
図18のライン1801と1802とに対応する。
【0120】
これに対し、撮像された画像データ内の印刷画像が左(反時計回り)に10°傾いていた場合、パワースペクトルのピークは角度領域φbに現れる。同様に、印刷画像が右(時計回り)に30°傾いていた場合、パワースペクトルのピークは角度領域φgに現れる。このようなパワースペクトルのピークの位置を検出することにより、二次元の傾き(回転)を検出する。そして、検出した傾きを補正するように、撮像画像の回転を行う。例えば、角度領域φbにピークが現れていた場合、左に10°傾いているため、画像を右に10°回転させることになる。
【0121】
なお、本実施形態では、
図16に示す4つのトリミングエリアで周波数解析を行っている。このため、回転の検出を全てのエリアで行う場合、読み取り時にあおりや読み取り精度によって、エリア毎に異なる回転情報が検出結果として得られる可能性がある。その場合は、トリミングエリア毎に得られる回転情報の平均値を使用してもよい。また、回転の検出に限っては1つのトリミングエリアから取得された回転角度のみを用いて補正を行うようにしてもよい。
【0122】
また、本実施形態では、距離情報の算出後に、その距離に相当するリング状の周波数エリアに対象を絞って回転情報の算出を行っている。このため、リング状の周波数エリア外に強いパワースペクトルが生じていた場合にも、その周波数エリア外の情報に影響されて回転情報が誤検出されることを軽減することができる。
【0123】
以上の方法によれば、0°~90°までの傾き(回転)を補正することが可能になる。しかし、この方法では、360°のうち、全ての方向の回転を補正することはできない。これは、
図12に示すパターンが、90°周期で空間周波数領域にピークを生じさせるためである。360°の全ての回転に対応するためには、付加情報取得部1504において付加情報を取得する際に、撮像画像の回転をさらに補正することが必要になる。すなわち、上記のような傾き補正を行った後の画像データが正しい向きに補正されていない場合、付加情報取得時に行う付加情報の抽出処理(分離処理)において、
図13のマーカ部1301の検出に失敗することとなる。これは、マーカ部1301検出時に特定のバイナリパターンを検出できないことにより生じる。そのため、例えば、付加情報取得時に上記のような傾き補正を行った後の画像データを、さらに0°、90°、180°、270°の4つの回転角で回転させ、特定のバイナリパターンの検出ができた場合の回転角を採用する。これによれば、以降の付加情報読み取りを正しく行うことができる。
【0124】
なお、撮像画像に対して0°~90°までの傾き(回転)の補正を行った後、その撮像画像を、90°毎に前述の4つの回転角でさらに回転させる理由は、
図12のパターンが90°周期で空間周波数領域にピークを生じさせるからである。従って、例えば、
図12(b)に示すパターンが、周波数は変わらずパターンの波の方向が、
図18のFFT変換された撮像画像データにおいて45°となるようなパターンであったとする。この場合、そのパターンのピーク位置1802は、45°の位置に変化する。そして、空間周波数領域における4点のピークの位置は、90°周期ではなく、180°周期で一致することになる。従って、回転情報の算出時には0~180°の傾き(回転)を補正し、付加情報取得時には上記傾き補正後の画像データを0°、180°の2つの回転角で回転させるようにする。
【0125】
以上のように本実施形態では、撮像画像の複数エリアを周波数解析し、距離の情報および傾き(回転)の情報を取得し、該距離情報および回転情報を使用してあおり補正を実施し、付加情報の読み取り時にさらに回転処理を行う。このため、印刷画像と撮像デバイスとの間で相対的なあおり及び回転(傾き)が発生していても、付加情報を適正に読み取ることができる。
【0126】
(その他の実施形態)
以上の実施形態では、印刷画像の全面の各単位ブロックに、同じ付加情報が繰り返し埋め込まれる例を示した。しかし、本発明はこれに限定されるものではない。各単位ブロックには、それぞれ別個の情報が埋め込まれてもよい。あるいは、単位ブロックを複数のグループに分類してもよい。この場合、第1のグループの単位ブロックには、第1の付加情報が埋め込まれており、第2のグループの単位ブロックには、第1の付加情報とは異なる第2の付加情報が埋め込まれても良い。また、第1のグループおよび第2のグループは、印刷画像の中において所定の領域に偏って配置されてもよい。あるいは、第1のグループと第2のグループは、分散して配置されてもよい。さらに、このようなグループは、3つ以上あってもよい。
【0127】
また、前述した実施形態では、付加情報を埋め込む単位ブロックを矩形のブロックとしたが、ブロックの形状は矩形に限定されるものではない。矩形以外の任意の形状の単位ブロックを用いて付加情報を埋め込んでもよい。
【0128】
また、付加情報が可変長の情報であり、付加情報が埋め込まれている領域の情報が、単位ブロックのデータ部の所定の場所(例えば、最初の部分)に埋め込まれていてもよい。例えば、800ビットの場合、冒頭の一部のビット(例えば80ビット)が、その単位ブロック内に付加情報が埋め込まれている範囲を示すものでもよい。
【0129】
また、付加情報の埋め込み方のルールをアプリケーション400が予め複数規定しておき、付加情報の例えば冒頭のヘッダ部分にルールを識別する情報を埋め込んでおき、識別されたルールに従って、付加情報の抽出が行われるようにしてもよい。
【0130】
前述した実施形態では、画像処理装置100とプリンタ114とがネットワークで接続されており、画像処理装置100が生成した印刷データがプリンタ114で印刷される例を示したが、これに限定されない。プリンタ114がアプリケーション400を備えてもよく、プリンタ114が、自身が生成した印刷データに基づいて付加情報が埋め込まれた印刷物を出力する形態でもよい。つまり、プリンタ114がアプリケーション400の機能の一部を兼ね備えてもよい。
【0131】
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0132】
100 情報処理装置
112 内部撮像デバイス(撮像手段)
1501 画像取得部(第1取得手段)
1502 距離情報算出部(第2取得手段)
1503 あおり補正部(第3取得手段、補正手段)
1504 付加情報取得部(抽出手段)