IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通クライアントコンピューティング株式会社の特許一覧

<>
  • 特開-情報処理装置 図1
  • 特開-情報処理装置 図2
  • 特開-情報処理装置 図3
  • 特開-情報処理装置 図4
  • 特開-情報処理装置 図5
  • 特開-情報処理装置 図6
  • 特開-情報処理装置 図7
  • 特開-情報処理装置 図8
  • 特開-情報処理装置 図9
  • 特開-情報処理装置 図10
  • 特開-情報処理装置 図11
  • 特開-情報処理装置 図12
  • 特開-情報処理装置 図13
  • 特開-情報処理装置 図14
  • 特開-情報処理装置 図15
  • 特開-情報処理装置 図16
  • 特開-情報処理装置 図17
  • 特開-情報処理装置 図18
  • 特開-情報処理装置 図19
  • 特開-情報処理装置 図20
  • 特開-情報処理装置 図21
  • 特開-情報処理装置 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024098612
(43)【公開日】2024-07-24
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
   G09G 5/00 20060101AFI20240717BHJP
   G09G 5/37 20060101ALI20240717BHJP
   G09G 5/38 20060101ALI20240717BHJP
   G06F 3/01 20060101ALI20240717BHJP
   H04N 5/66 20060101ALI20240717BHJP
【FI】
G09G5/00 510V
G09G5/00 550C
G09G5/37 600
G09G5/38 100
G06F3/01 510
H04N5/66 B
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023002203
(22)【出願日】2023-01-11
(71)【出願人】
【識別番号】518133201
【氏名又は名称】富士通クライアントコンピューティング株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】中西 貴洋
【テーマコード(参考)】
5C058
5C182
5E555
【Fターム(参考)】
5C058AB07
5C058BA35
5C182AB02
5C182AC02
5C182AC38
5C182BA01
5C182BA03
5C182BA04
5C182BA06
5C182BA14
5C182BA54
5C182BA55
5C182BA65
5C182BA66
5C182BB01
5C182BB05
5C182BB26
5C182BC26
5C182CB42
5C182DA44
5E555AA63
5E555BA02
5E555BB02
5E555BC08
5E555CA42
5E555CB66
5E555CC05
5E555DA06
5E555EA11
5E555FA00
(57)【要約】
【課題】表示装置の設定を容易にすることができる。
【解決手段】情報処理装置10は、第1表示装置1に設置された第1カメラ1aがユーザ3を撮像した第1カメラ画像4を解析してユーザ3の姿勢が示す第1方向を検出する。情報処理装置10は、第1表示領域5aを第1表示装置1に表示させ第2表示領域5bを第2表示装置2に拡張表示させる場合の、第1表示領域5aに対する第2表示領域5bのコンピュータ処理上の座標系5における位置関係を、第1方向に基づいて決定する。
【選択図】図1
【特許請求の範囲】
【請求項1】
第1表示装置に設置された第1カメラがユーザを撮像した第1カメラ画像を解析して前記ユーザの姿勢が示す第1方向を検出し、第1表示領域を前記第1表示装置に表示させ第2表示領域を第2表示装置に拡張表示させる場合の、前記第1表示領域に対する前記第2表示領域のコンピュータ処理上の座標系における位置関係を、前記第1方向に基づいて決定する処理部、
を有する情報処理装置。
【請求項2】
前記処理部は、前記第2表示装置に顔を向けるよう促す画面を前記第1表示装置または前記第2表示装置に表示させ、前記第1カメラ画像から前記ユーザの顔の向きを特定し、前記ユーザの顔の向きに基づいて前記第1方向を検出する、
請求項1記載の情報処理装置。
【請求項3】
前記処理部は、前記第2表示装置を指し示すよう促す画面を前記第1表示装置または前記第2表示装置に表示させ、前記第1カメラ画像から前記ユーザの指が指し示す向きを特定し、前記ユーザの指が指し示す向きに基づいて前記第1方向を検出する、
請求項1記載の情報処理装置。
【請求項4】
前記処理部は、前記ユーザを撮像した第2カメラ画像を解析して前記ユーザの姿勢が示す第2方向を検出し、第3表示領域を第3表示装置に拡張表示させる場合の、前記第1表示領域に対する前記第3表示領域の前記座標系における位置関係を、前記第2方向に基づいて決定し、前記第2表示領域の一部と前記第3表示領域の一部とが重複する重複領域がある場合、前記座標系における水平方向または垂直方向のうち前記重複領域の短手方向に、前記第2表示領域または前記第3表示領域をずらす、
請求項1記載の情報処理装置。
【請求項5】
前記処理部は、前記第1カメラが撮像した第3カメラ画像に基づいて、前記第1表示装置に対する前記ユーザの顔の向きを特定し、前記第2表示装置に設置された第2カメラが前記第3カメラ画像が撮像されるときに撮像した第4カメラ画像に基づいて、前記第2表示装置に対する前記ユーザの顔の向きを特定し、前記第1表示装置に対する前記ユーザの顔の向きと前記第2表示装置に対する前記ユーザの顔の向きとに基づいて、前記第1表示領域に対する前記第2表示領域の前記座標系における位置関係を変更するか否かを決定する、
請求項1記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置に関する。
【背景技術】
【0002】
コンピュータに複数の表示装置を接続することがある。複数の表示装置それぞれに表示される表示領域のコンピュータ処理上の位置関係を設定して表示画面を拡張することで、ユーザは複数の表示装置を連続した画面のように扱うことができる。
【0003】
複数の表示装置の設定に関する技術としては、例えば、複数のディスプレイに接続して利用する場合に、各ディスプレイのレイアウトを容易に認識させ、正しい表示を行わせるためのセッティングを容易に行うことができる情報処理装置が提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2022-118465号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
複数の表示装置を用いて画面表示を拡張する場合、コンピュータ処理上の位置関係の設定は、表示装置の実際の位置関係に対応していることが好ましい。表示装置を共有している場合や物理的な配置換え等によって、表示装置の実際の位置関係が変動することがある。表示装置の実際の位置関係が変動するたびに手動で設定変更をすると手間がかかる。
【0006】
1つの側面では、本件は、表示装置の設定を容易にすることを目的とする。
【課題を解決するための手段】
【0007】
1つの案では、処理部を有する情報処理装置が提供される。処理部は、第1表示装置に設置された第1カメラがユーザを撮像した第1カメラ画像を解析してユーザの姿勢が示す第1方向を検出し、第1表示領域を第1表示装置に表示させ第2表示領域を第2表示装置に拡張表示させる場合の、第1表示領域に対する第2表示領域のコンピュータ処理上の座標系における位置関係を、第1方向に基づいて決定する。
【発明の効果】
【0008】
1態様によれば、表示装置の設定を容易にすることができる。
【図面の簡単な説明】
【0009】
図1】第1の実施の形態に係る情報処理装置の一例を示す図である。
図2】第2の実施の形態に係るPCの一例を示す図である。
図3】PCおよびモニタのハードウェアの一構成例を示す図である。
図4】コンピュータ処理上の座標系における表示領域の一例を示す図である。
図5】PCの機能例を示すブロック図である。
図6】クラス形式の一例を示す図である。
図7】顔の向きによるベクトル検出処理の一例を示す図である。
図8】指が指し示す向きによるベクトル検出処理の一例を示す図である。
図9】表示領域を上に配置する場合の座標系の一例を示す図である。
図10】表示領域を右上に配置する場合の座標系の一例を示す図である。
図11】表示領域を右に配置する場合の座標系の一例を示す図である。
図12】表示領域を右下に配置する場合の座標系の一例を示す図である。
図13】表示領域を下に配置する場合の座標系の一例を示す図である。
図14】表示領域を左下に配置する場合の座標系の一例を示す図である。
図15】表示領域を左に配置する場合の座標系の一例を示す図である。
図16】表示領域を左上に配置する場合の座標系の一例を示す図である。
図17】別のモニタの表示領域を配置する場合の座標系の一例を示す図である。
図18】表示領域の調整処理の一例を示す図である。
図19】表示領域設定処理の手順の一例を示すフローチャート(その1)である。
図20】表示領域設定処理の手順の一例を示すフローチャート(その2)である。
図21】表示領域設定処理の手順の一例を示すフローチャート(その3)である。
図22】設定調整処理の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。
【0011】
図1は、第1の実施の形態に係る情報処理装置の一例を示す図である。第1の実施の形態は、第1表示装置1および第2表示装置2の設定をするものである。
情報処理装置10は、ユーザ3によって操作されるコンピュータである。情報処理装置10は、第1表示装置1、第1カメラ1aおよび第2表示装置2に接続されている。第1表示装置1および第2表示装置2は、情報処理装置10から出力された画像を表示する表示装置である。第1カメラ1aは、第1表示装置1に設置されている。第1カメラ1aは、第1表示装置1に対して所定の方向を撮像可能なように設置されている。例えば、第1カメラ1aは、第1表示装置1のパネルの正面を撮像可能なように設置されている。
【0012】
情報処理装置10は、第1表示領域5aを第1表示装置1に表示させ第2表示領域5bを第2表示装置2に拡張表示させる。第1表示領域5aおよび第2表示領域5bは、コンピュータ処理上の座標系5内の領域である。座標系5では、表示データが表示領域内にある場合、表示装置の対応する位置に当該表示データが表示される。例えば、座標系5において、第1表示領域5aにあるカーソルを第2表示領域5bに移動するコンピュータ処理が実行された場合、当該カーソルの表示は、第1表示装置1の画面上から第2表示装置2の画面上に移動する。
【0013】
なお、情報処理装置10は、ノートPC(Personal Computer)であってもよく、第1表示装置1または第2表示装置2は、ノートPCである情報処理装置10の内蔵モニタであってもよい。また、第1カメラ1aは、ノートPCである情報処理装置10の内蔵カメラであってもよい。また、第1カメラ1aは、第1表示装置1の内蔵カメラであってもよい。
【0014】
情報処理装置10は、処理部11を有する。処理部11は、情報処理装置10を制御し、所要の処理を実行可能である。処理部11は、例えば、情報処理装置10が有するプロセッサまたは演算回路である。処理部11は、第1表示装置1と第2表示装置2とを用いて画面を拡張表示する際の設定をする。例えば、処理部11は、情報処理装置10と第1表示装置1とが接続されている状態で、第2表示装置2が情報処理装置10に接続されたときに、拡張表示の設定をする。
【0015】
まず、処理部11は、第1カメラ1aを用いてユーザ3を撮像する。例えば、処理部11は、第2表示装置2に顔を向けるよう促す画面を第1表示装置1または第2表示装置2に表示させる。そして、処理部11は、第1カメラ1aにユーザ3を撮像させる。
【0016】
処理部11は、第1カメラ1aがユーザ3を撮像した第1カメラ画像4を解析してユーザ3の姿勢が示す第1方向を検出する。ユーザ3の姿勢が示す第1方向は、ユーザ3の体の少なくとも一部によって示される方向であり、例えば、顔が向いている方向や指が指し示している方向である。
【0017】
ここで、処理部11は、第1カメラ画像4からユーザ3の顔の向きを特定する。例えば、処理部11は、人物の画像と顔の向きとが対応付けられた学習データを用いて学習した学習済みモデルによって、第1カメラ画像4に写るユーザ3の顔の向きを特定する。なお、処理部11は、第1カメラ画像4が左右反転して撮像されている場合、正面から見たユーザ3の顔の向きを特定する。ここでは、処理部11は、第1カメラ画像4からユーザ3の顔の向きを左と特定する。処理部11は、ユーザ3の顔の向きに基づいて第1方向を検出する。ここでは、処理部11は、ユーザ3の顔の向きである左を第1方向として検出する。
【0018】
そして、処理部11は、第1表示領域5aに対する第2表示領域5bの座標系5における位置関係を、第1方向に基づいて決定する。ここでは、処理部11は、座標系5において、第2表示領域5bを第1表示領域5aの左側に配置するよう決定する。
【0019】
第1の実施の形態によれば、情報処理装置10の処理部11は、第1表示装置1に設置された第1カメラ1aがユーザ3を撮像した第1カメラ画像4を解析してユーザ3の姿勢が示す第1方向を検出する。処理部11は、第1表示領域5aを第1表示装置1に表示させ第2表示領域5bを第2表示装置2に拡張表示させる場合の、第1表示領域5aに対する第2表示領域5bのコンピュータ処理上の座標系5における位置関係を、第1方向に基づいて決定する。
【0020】
これにより、情報処理装置10は、第1表示領域5aと第2表示領域5bとの位置関係を、第1表示装置1と第2表示装置2との物理的な位置関係に沿うように自動で設定することができる。よって、情報処理装置10は、表示装置の設定を容易にすることができる。
【0021】
また、処理部11は、第2表示装置2に顔を向けるよう促す画面を第1表示装置1または第2表示装置2に表示させ、第1カメラ画像4からユーザ3の顔の向きを特定し、ユーザ3の顔の向きに基づいて第1方向を検出する。これにより、情報処理装置10は、ユーザ3が第2表示装置2に顔を向けるだけで表示装置の設定ができるようにすることができる。
【0022】
なお、処理部11は、第2表示装置2を指し示すよう促す画面を第1表示装置1または第2表示装置2に表示させ、第1カメラ画像4からユーザ3の指が指し示す向きを特定し、ユーザ3の指が指し示す向きに基づいて第1方向を検出してもよい。これにより、情報処理装置10は、ユーザ3が第2表示装置2を指し示すだけで表示装置の設定ができるようにすることができる。
【0023】
また、処理部11は、ユーザ3を撮像した第2カメラ画像を解析してユーザ3の姿勢が示す第2方向を検出してもよい。処理部11は、第3表示領域を第3表示装置に拡張表示させる場合の、第1表示領域5aに対する第3表示領域の座標系5における位置関係を、第2方向に基づいて決定してもよい。そして、処理部11は、第2表示領域5bの一部と第3表示領域の一部とが重複する重複領域がある場合、座標系5における水平方向または垂直方向のうち重複領域の短手方向に、第2表示領域5bまたは第3表示領域をずらしてもよい。これにより、情報処理装置10は、3以上の表示装置が接続された場合についても適切に設定をすることができる。
【0024】
また、処理部11は、第1カメラ1aが撮像した第3カメラ画像に基づいて、第1表示装置1に対するユーザ3の顔の向きを特定し、第2表示装置2に設置された第2カメラが第3カメラ画像が撮像されるときに撮像した第4カメラ画像に基づいて、第2表示装置2に対するユーザ3の顔の向きを特定してもよい。そして、処理部11は、第1表示装置1に対するユーザ3の顔の向きと第2表示装置2に対するユーザ3の顔の向きとに基づいて、第1表示領域5aに対する第2表示領域5bの座標系5における位置関係を変更するか否かを決定してもよい。これにより、情報処理装置10は、使用中に第1表示装置1と第2表示装置2の物理的な位置関係が変更された場合、第1表示領域5aに対する第2表示領域5bの座標系5における位置関係を変更することができる。
【0025】
〔第2の実施の形態〕
次に、第2の実施の形態について説明する。第2の実施の形態は、マルチモニタの設定をするものである。
【0026】
図2は、第2の実施の形態に係るPCの一例を示す図である。PC100は、ユーザ21によって操作されるノートPCである。PC100は、カメラ105を有する。カメラ105は、PC100の内蔵モニタの上部に、内蔵モニタのパネルの正面方向を撮像可能に設置されている。また、PC100は、モニタ200に接続されている。例えば、ユーザ21は、モニタ200が設置されている共用の座席にPC100を持って着席し、PC100とモニタ200とを接続する。そして、ユーザ21は、モニタ200が接続されたPC100を操作する。
【0027】
モニタ200は、接続先のコンピュータから取得した画像を表示する。モニタ200は、カメラ203を有する。カメラ203は、モニタ200に内蔵されたカメラであり、モニタ200の接続先のコンピュータから制御可能である。カメラ203は、モニタ200の上部に、モニタ200のパネルの正面方向を撮像可能に設置されている。
【0028】
PC100は、PC100にモニタ200が接続されたときに、PC100の内蔵モニタとモニタ200とをマルチモニタとして使用する設定をする。PC100は、PC100にモニタ200が接続されると、モニタ200に顔を向けるまたはモニタ200を指で指し示すよう促す画面をモニタ200に表示する。そして、PC100は、カメラ105によってユーザ21を撮像し、撮像したカメラ画像に基づいて、PC100の内蔵モニタに表示させる表示領域とモニタ200に表示させる表示領域とのコンピュータ処理上の座標系における位置関係を決定する。
【0029】
図3は、PCおよびモニタのハードウェアの一構成例を示す図である。PC100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス112を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現してもよい。
【0030】
また、プロセッサ101は、GPU(Graphics Processing Unit)101aを含む。GPU101aは、プロセッサ101に内蔵されたGPUである。GPU101aは、モニタに表示させる画像を生成し、生成した画像をモニタの画面に表示させる。なお、PC100は、GPU101aに代えてバス112に接続されたGPUを有していてもよい。
【0031】
メモリ102は、PC100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)等の揮発性の半導体記憶装置が使用される。
【0032】
バス112に接続されている周辺機器としては、ストレージ装置103、内蔵モニタ104、カメラ105、入力インタフェース106、光学ドライブ装置107および機器接続インタフェース108がある。また、バス112に接続されている周辺機器としては、コントローラ109、接続インタフェース110およびネットワークインタフェース111がある。
【0033】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0034】
内蔵モニタ104は、GPU101aによって生成された画像をパネルに表示する。内蔵モニタ104のパネルとしては、有機EL(Electro Luminescence)や液晶を用いたパネルがある。
【0035】
カメラ105は、レンズを向けた先からの光をイメージセンサによって電気信号に変換して画像を生成する。カメラ105は、プロセッサ101からの命令に従って、カメラ105のレンズを向けた先の光景の静止画または動画のデータを生成し、メモリ102に格納する。カメラ105は、例えば、内蔵モニタ104の上部に、内蔵モニタ104のパネルの正面を撮像可能なように設置される。
【0036】
入力インタフェース106には、キーボード31とマウス32とが接続されている。入力インタフェース106は、キーボード31やマウス32から送られてくる信号をプロセッサ101に送信する。なお、マウス32は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボール等がある。
【0037】
光学ドライブ装置107は、レーザ光等を利用して、光ディスク33に記録されたデータの読み取りを行う。光ディスク33は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク33には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)等がある。
【0038】
機器接続インタフェース108は、PC100に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース108には、メモリ装置34やメモリリーダライタ35を接続することができる。メモリ装置34は、機器接続インタフェース108との通信機能を搭載した記録媒体である。メモリリーダライタ35は、メモリカード36へのデータの書き込み、またはメモリカード36からのデータの読み出しを行う装置である。メモリカード36は、カード型の記録媒体である。
【0039】
コントローラ109は、プロセッサ101からの命令に従って、接続インタフェース110を介した通信を制御する。コントローラ109は、例えば、マイクロコントローラである。接続インタフェース110は、PC100にモニタ200を接続するためのインタフェースである。接続インタフェース110が用いる規格としては、例えば、HDMI(High Definition Multimedia Interface:登録商標)、DP(Display Port:登録商標)、USB(Universal Serial Bus) Type-c等がある。なお、PC100は、接続インタフェース110と同様の接続インタフェースを複数有していてもよい。
【0040】
ネットワークインタフェース111は、ネットワーク30に接続されている。ネットワークインタフェース111は、ネットワーク30を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0041】
モニタ200は、コントローラ201、接続インタフェース202、カメラ203およびパネル204を有する。コントローラ201は、接続インタフェース202を介した通信を制御する。コントローラ201は、例えば、マイクロコントローラである。コントローラ201は、接続インタフェース202を介してPC100から受信した命令をカメラ203に通知することでカメラ203を制御する。また、コントローラ201は、カメラ203が撮像した画像をPC100に送信する。
【0042】
接続インタフェース202は、モニタ200をPC100に接続するためのインタフェースである。接続インタフェース202が用いる規格としては、例えば、HDMI、DP、USB Type-c等がある。
【0043】
カメラ203は、レンズを向けた先からの光をイメージセンサによって電気信号に変換して画像を生成する。カメラ203は、コントローラ201を介して受信したPC100からの命令に従って、カメラ203のレンズを向けた先の光景の静止画または動画のデータを生成し、コントローラ201に送信する。カメラ203は、例えば、モニタ200の上部に、パネル204の正面を撮像可能なように設置される。
【0044】
パネル204は、接続インタフェース202を介して取得した、GPU101aによって生成された画像を表示する。パネル204としては、有機ELや液晶を用いたパネルがある。
【0045】
PC100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した情報処理装置10も、図2に示したPC100と同様のハードウェアにより実現することができる。また、プロセッサ101は、第1の実施の形態に示した処理部11の一例である。また、内蔵モニタ104は、第1の実施の形態に示した第1表示装置1の一例である。また、モニタ200は、第1の実施の形態に示した第2表示装置2の一例である。
【0046】
PC100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。PC100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、PC100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またPC100に実行させるプログラムを、光ディスク33、メモリ装置34、メモリカード36等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。次に、コンピュータ処理上の座標系におけるモニタの表示領域について説明する。
【0047】
図4は、コンピュータ処理上の座標系における表示領域の一例を示す図である。座標系40は、モニタへの表示処理における表示内容を管理する座標系である。座標系40のx軸は、右方向が正の方向である。また、座標系40のy軸は、下方向が正の方向である。以下では、プライマリモニタ(1番目のモニタ)とセカンダリモニタ(2番目のモニタ)に表示処理が行われる場合について説明する。
【0048】
座標系40には、表示領域41,42が設定されている。表示領域41は、プライマリモニタに表示される表示データが配置される表示領域である。表示領域41は、左上の頂点の座標が座標系40における原点(0,0)となるように、プライマリモニタの解像度に応じた大きさの長方形で設定される。例えば、プライマリモニタが横1920px、縦1080pxの解像度である場合、表示領域41は、左上の頂点の座標が原点(0,0)である、横の長さが1920、縦の長さが1080の長方形で設定される。
【0049】
座標系40において表示データが表示領域41内に配置されている場合、表示領域41における当該表示データの位置に対応する、プライマリモニタの画面上の位置に当該表示データが表示される。例えば、座標系40において(50,50)に配置された表示データは、プライマリモニタの画面上の(50,50)の位置に表示される。
【0050】
表示領域42は、セカンダリモニタに表示される表示データが配置される表示領域である。表示領域42は、表示領域41に隣接して設定される。ここでは、表示領域41の右上の頂点と表示領域42の左上の頂点とが一致しているものとする。つまり、表示領域42は、左上の頂点の座標が座標系40における(1920,0)となるように、セカンダリモニタの解像度に応じた大きさの長方形で設定される。例えば、セカンダリモニタが横3440px、縦1440pxの解像度である場合、表示領域42は、左上の頂点の座標が(1920,0)である、横の長さが3440、縦の長さが1440の長方形で設定される。
【0051】
座標系40において表示データが表示領域42内に配置されている場合、表示領域42における当該表示データの位置に対応する、セカンダリモニタの画面上の位置に当該表示データが表示される。例えば、座標系40において(2000,50)に配置された表示データは、セカンダリモニタの画面上の(80,50)の位置に表示される。
【0052】
このように、モニタごとの表示領域が設定されることで、複数のモニタによって表示画面が拡張される。ここで、各表示領域の位置関係と、モニタの物理的な位置関係とが一致していない場合、コンピュータ処理上の座標系における表示データの移動と、モニタの表示画面における表示データの移動とが異なってしまうことがある。また、各表示領域の位置関係と、モニタの物理的な位置関係とが一致していない場合、表示領域をまたいでコンピュータ処理上の座標系に配置された表示データが、モニタの表示画面においてずれて表示されてしまうことがある。よって、各表示領域のコンピュータ処理上の座標系における位置関係は、対応するモニタの物理的な位置関係と一致するよう設定されることが好ましい。
【0053】
そこで、第2の実施の形態では、PC100は、カメラ105によって、モニタ200に顔を向けるまたはモニタ200を指で指し示すユーザ21を撮像し、ユーザ21が示す方向のベクトルを検出する。そして、PC100は、検出したベクトルに基づいて、内蔵モニタ104に対応する表示領域とモニタ200に対応する表示領域とを決定する。次に、PC100の機能について詳細に説明する。
【0054】
図5は、PCの機能例を示すブロック図である。PC100は、モニタ制御部120、カメラ制御部130および解析部140を有する。モニタ制御部120、カメラ制御部130および解析部140は、メモリ102に記憶されたプログラムをプロセッサ101が実行することで実現される。
【0055】
モニタ制御部120は、内蔵モニタ104およびPC100に接続されたモニタの制御をする。モニタ制御部120は、顔の向きでベクトル検出する設定である場合、モニタを新規検出すると、新規接続されたモニタを直視するよう促す画面を、新規接続されたモニタに表示させる。また、モニタ制御部120は、指で指し示す向きでベクトル検出する設定である場合、新規接続されたモニタを指で指すよう促す画面を、新規接続されたモニタに表示させる。モニタ制御部120は、解析部140が決定した新規接続されたモニタの表示領域を適用する。
【0056】
カメラ制御部130は、カメラ105およびPC100に接続されたモニタに設置されたカメラの制御をする。カメラ制御部130は、モニタ制御部120が新規接続されたモニタを直視するよう促す画面または新規接続されたモニタを指で指すよう促す画面を表示すると、カメラ105でユーザ21を撮像する。
【0057】
また、カメラ制御部130は、PC100に接続された各モニタの使用中に、PC100に接続された各モニタのカメラでユーザ21を撮像する。カメラ制御部130は、撮像したカメラ画像のいずれかについて解析部140がユーザ21の顔が正面向きであると判定した場合、カメラ105でユーザ21を撮像する。
【0058】
解析部140は、撮像したカメラ画像を解析してベクトルを検出し、検出したベクトルに基づいて、新規接続されたモニタの表示領域を決定する。解析部140は、顔の向きでベクトル検出する設定である場合、カメラ画像を解析し、カメラ画像に写るユーザ21が顔を向けている向きをベクトルとして検出する。例えば、解析部140は、人物の画像と顔の向きとが対応付けられた学習データを用いて学習した学習済みモデルによって、カメラ画像に写るユーザ21の顔の向きをベクトルとして検出する。
【0059】
また、解析部140は、指で指し示す向きでベクトル検出する設定である場合、カメラ画像を解析し、カメラ画像に写るユーザ21の指が指し示す向きをベクトルとして検出する。例えば、解析部140は、手を認識する学習済みモデルによって、カメラ画像に写る手のランドマーク認識を行う。そして、解析部140は、手の形と指が指し示す向きとが対応付けられた学習データを用いて学習した学習済みモデルによって、カメラ画像に写るユーザ21の指が指し示す向きをベクトルとして検出する。
【0060】
解析部140は、内蔵モニタ104の表示領域に対して、検出したベクトルの向きに新規接続されたモニタの表示領域を配置する。ここで、解析部140は、新規接続されたモニタの表示領域がすでに設定した表示領域と重複する場合、すでに設定した表示領域と重複する重複領域の短手方向に新規接続されたモニタの表示領域をずらす。
【0061】
また、解析部140は、PC100に接続された各モニタの使用中に、各モニタのカメラで撮像したカメラ画像を解析し、カメラ画像に写るユーザ21の顔が正面向きであるか否かを判定する。解析部140は、いずれかのカメラ画像に写るユーザ21の顔が正面向きであると判定した場合、カメラ制御部130がカメラ105でユーザ21を撮像したカメラ画像に写るユーザ21の顔の向きをベクトルとして検出する。そして、解析部140は、カメラ画像から検出したベクトルと、内蔵モニタ104の表示領域に対する、正面向きであると判定されたモニタの表示領域の方向とが一致するか否かを判定する。解析部140は、カメラ画像から検出したベクトルと表示領域の方向とが一致しないと判定した場合、正面向きであると判定されたモニタの表示領域を再設定する。
【0062】
なお、図5に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。次に、モニタの情報を管理するためのクラス形式について説明する。
【0063】
図6は、クラス形式の一例を示す図である。クラス形式51は、接続されたモニタの情報を管理するためのクラスの形式である。クラス形式51には、メンバ変数としてDeviceID、ScreenHeightおよびScreenWidthが含まれる。
【0064】
DeviceIDには、モニタの識別子が文字列型(string型)で設定される。ScreenHeightには、モニタの高さが符号なしの整数型(uint32型)で設定される。ScreenWidthには、モニタの幅が符号なしの整数型(uint32型)で設定される。
【0065】
次に、カメラ105によってユーザ21を撮像したカメラ画像によるベクトル検出について説明する。まず、ユーザ21の顔の向きからベクトル検出する処理について説明する。
【0066】
図7は、顔の向きによるベクトル検出処理の一例を示す図である。PC100は、モニタ200に顔を向けるユーザ21を撮像し、撮像したカメラ画像においてユーザ21が顔を向ける方向をベクトルとして検出する。なお、ベクトルは、第1の実施の形態に示した第1方向および第2方向の一例である。
【0067】
まず、モニタ制御部120は、内蔵モニタ104に画面61aを表示させる。画面61aは、内蔵モニタ104に顔を向けるよう促す画面である。画面61aは、中央に四角形を含む。また、画面61aは、「プライマリモニタの四角を見てください」等の、内蔵モニタ104に顔を向けるよう促すメッセージを含む。
【0068】
内蔵モニタ104に画面61aが表示されると、カメラ制御部130は、カメラ105にユーザ21を撮像させる。解析部140は、カメラ105が撮像したカメラ画像62aを解析し、カメラ画像62aに写るユーザ21が正面を向いていることを確認する。例えば、解析部140は、人物の画像と顔が正面を向いているか否かとが対応付けられた学習データを用いて学習した学習済みモデルによって、カメラ画像62aに写るユーザ21が正面を向いているか否かを特定する。
【0069】
解析部140がカメラ画像62aに写るユーザ21が正面を向いていることを確認すると、モニタ制御部120は、モニタ200に画面61bを表示させる。画面61bは、モニタ200に顔を向けるよう促す画面である。画面61bは、中央に四角形を含む。また、画面61bは、「セカンダリモニタの四角を見てください」等の、モニタ200に顔を向けるよう促すメッセージを含む。モニタ200に画面61bが表示されると、カメラ制御部130は、カメラ105にユーザ21を撮像させる。
【0070】
解析部140は、カメラ105が撮像したカメラ画像62bを解析し、カメラ画像62bに写るユーザ21が顔を向けている向きをベクトルとして検出する。例えば、解析部140は、人物の画像と顔の向き(上、右上、右、右下、下、左下、左または左上)とが対応付けられた学習データを用いて学習した学習済みモデルによって、カメラ画像62bに写るユーザ21の顔の向きを特定する。解析部140は、特定された顔の向きである上、右上、右、右下、下、左下、左または左上をベクトルとして検出する。なお、解析部140は、カメラ画像62bが左右反転して撮像されている場合、カメラ画像62bを正面から見たときのユーザ21が顔を向けている方向をベクトルとして検出する。
【0071】
このようにして、解析部140は、モニタ200に顔を向けるよう促したユーザ21を撮像したカメラ画像62bから、ユーザ21が顔を向けている向きをベクトルとして検出する。ここで、解析部140は、カメラ画像62aに写るユーザ21が正面を向いていることを確認しているため、ユーザ21の顔が内蔵モニタ104の正面にあることを確認している。そして、解析部140は、内蔵モニタ104の正面にあるユーザ21の顔がモニタ200を向いたときの顔の向きをベクトルとして検出することで、内蔵モニタ104に対するモニタ200の位置をベクトルとして検出することができる。次に、ユーザ21の指が指し示す向きからベクトル検出する処理について説明する。
【0072】
図8は、指が指し示す向きによるベクトル検出処理の一例を示す図である。PC100は、モニタ200を指し示すユーザ21を撮像し、撮像したカメラ画像においてユーザ21が指し示している方向をベクトルとして検出する。
【0073】
まず、モニタ制御部120は、モニタ200に画面71を表示させる。画面71は、モニタ200を指し示すよう促す画面である。画面71は、中央に四角形を含む。また、画面71は、「セカンダリモニタの四角を指さしてください」等の、モニタ200を指し示すよう促すメッセージを含む。モニタ200に画面71が表示されると、カメラ制御部130は、カメラ105にユーザ21を撮像させる。
【0074】
解析部140は、カメラ105が撮像したカメラ画像72を解析し、カメラ画像72に写るユーザ21の指が指し示す向きをベクトルとして検出する。例えば、解析部140は、手を認識する学習済みモデルによって、カメラ画像72に写る手のランドマーク認識を行う。そして、解析部140は、手の形と指が指し示す向き(上、右上、右、右下、下、左下、左または左上)とが対応付けられた学習データを用いて学習した学習済みモデルによって、カメラ画像72に写るユーザ21の指が指し示す向きを特定する。解析部140は、特定された向きである上、右上、右、右下、下、左下、左または左上をベクトルとして検出する。なお、解析部140は、カメラ画像72が左右反転して撮像されている場合、カメラ画像72を正面から見たときのユーザ21の指が指し示す方向をベクトルとして検出する。
【0075】
このようにして、解析部140は、モニタ200を指し示すよう促したユーザ21を撮像したカメラ画像72から、ユーザ21の指が指し示す方向をベクトルとして検出する。これにより、解析部140は、内蔵モニタ104に対するモニタ200の位置をベクトルとして検出することができる。次に、検出したベクトルを用いた表示領域の位置関係の決定処理について説明する。
【0076】
図9は、表示領域を上に配置する場合の座標系の一例を示す図である。解析部140は、検出したベクトルが上である場合、コンピュータ処理上の座標系80において、プライマリモニタである内蔵モニタ104に表示させる表示領域81の上に、新規接続されたモニタであるモニタ200に表示させる表示領域82aを配置する。なお、表示領域81は、第1の実施の形態に示した第1表示領域5aの一例である。また、表示領域82aは、第1の実施の形態に示した第2表示領域5bの一例である。
【0077】
座標系80は、PC100の表示処理における表示内容を管理する座標系である。座標系80のx軸は、右方向が正の方向である。また、座標系80のy軸は、下方向が正の方向である。表示領域81は、内蔵モニタ104に表示される表示データが配置される表示領域である。表示領域81は、左上の頂点の座標が座標系80における原点(0,0)である、横の長さがPW、縦の長さがPHの長方形で設定される。なお、PWは、内蔵モニタ104の横の解像度であり、PHは、内蔵モニタ104の縦の解像度である。
【0078】
解析部140は、表示領域81が設定されている座標系80において、表示領域81の上に表示領域82aを設定する。表示領域82aは、モニタ200に表示される表示データが配置される表示領域である。解析部140は、表示領域81の上辺と表示領域82aの下辺とが接するように表示領域82aを決定する。また、解析部140は、表示領域81の中心と表示領域82aの中心とが同じy軸に平行な直線上となるように、表示領域82aを決定する。これにより、表示領域82aは、左上の頂点の座標が座標系80における(+PW/2-NW/2,-NH)である、横の長さがNW、縦の長さがNHの長方形に決定される。なお、NWは、モニタ200の横の解像度であり、NHは、モニタ200の縦の解像度である。
【0079】
例えば、内蔵モニタ104が横1920px、縦1080pxの解像度であり、モニタ200が横3440px、縦1440pxの解像度である場合、解析部140は、表示領域82aの左上の頂点の座標を(-760,-1440)と決定する。
【0080】
このようにして、解析部140は、検出されたベクトルが上であった場合、表示領域82aの左上の頂点の座標を決定する。そして、モニタ制御部120は、決定された座標とモニタ200のサイズとをレジストリに格納する。例えば、モニタ制御部120は、座標(-760,-1440)を符号付整数16進数(0xFFFFFD08,0xFFFFFA60)に変換し、レジストリに格納する。以下では、検出されたベクトルが右上、右、右下、下、左下、左、左上の場合についても説明する。
【0081】
図10は、表示領域を右上に配置する場合の座標系の一例を示す図である。解析部140は、検出したベクトルが右上である場合、座標系80において、表示領域81の右上にモニタ200に表示させる表示領域82bを設定する。
【0082】
解析部140は、座標系80において、表示領域81の上辺の右半分と表示領域82bの下辺とが接するように表示領域82bを決定する。これにより、表示領域82bは、左上の頂点の座標が座標系80における(+PW/2,-NH)である、横の長さがNW、縦の長さがNHの長方形に決定される。
【0083】
なお、解析部140は、表示領域81の右辺の上半分と表示領域82bの左辺とが接するように表示領域82bを決定してもよい。このように、解析部140は、モニタ200の表示領域を斜め方向に配置する場合に、表示領域81と辺の一部が接するように設定することで、画面間のカーソル移動を自然に表示させることができる。
【0084】
図11は、表示領域を右に配置する場合の座標系の一例を示す図である。解析部140は、検出したベクトルが右である場合、座標系80において、表示領域81の右にモニタ200に表示させる表示領域82cを設定する。
【0085】
解析部140は、座標系80において、表示領域81の右辺と表示領域82cの左辺とが接するように表示領域82cを決定する。また、解析部140は、表示領域81の中心と表示領域82cの中心とが同じx軸に平行な直線上となるように、表示領域82cを決定する。これにより、表示領域82cは、左上の頂点の座標が座標系80における(+PW,+PH/2-NH/2)である、横の長さがNW、縦の長さがNHの長方形に決定される。
【0086】
図12は、表示領域を右下に配置する場合の座標系の一例を示す図である。解析部140は、検出したベクトルが右下である場合、座標系80において、表示領域81の右下にモニタ200に表示させる表示領域82dを設定する。
【0087】
解析部140は、座標系80において、表示領域81の右辺の下半分と表示領域82dの左辺とが接するように表示領域82dを決定する。これにより、表示領域82dは、左上の頂点の座標が座標系80における(+PW,+PH/2)である、横の長さがNW、縦の長さがNHの長方形に決定される。
【0088】
図13は、表示領域を下に配置する場合の座標系の一例を示す図である。解析部140は、検出したベクトルが下である場合、座標系80において、表示領域81の下にモニタ200に表示させる表示領域82eを設定する。
【0089】
解析部140は、座標系80において、表示領域81の右辺と表示領域82eの左辺とが接するように表示領域82eを決定する。また、解析部140は、表示領域81の中心と表示領域82eの中心とが同じy軸に平行な直線上となるように、表示領域82eを決定する。これにより、表示領域82eは、左上の頂点の座標が座標系80における(+PW/2-NW/2,+PH)である、横の長さがNW、縦の長さがNHの長方形に決定される。
【0090】
図14は、表示領域を左下に配置する場合の座標系の一例を示す図である。解析部140は、検出したベクトルが左下である場合、座標系80において、表示領域81の左下にモニタ200に表示させる表示領域82fを設定する。
【0091】
解析部140は、座標系80において、表示領域81の左辺の下半分と表示領域82fの右辺とが接するように表示領域82fを決定する。これにより、表示領域82fは、左上の頂点の座標が座標系80における(-NW,+PH/2)である、横の長さがNW、縦の長さがNHの長方形に決定される。
【0092】
図15は、表示領域を左に配置する場合の座標系の一例を示す図である。解析部140は、検出したベクトルが左である場合、座標系80において、表示領域81の左にモニタ200に表示させる表示領域82gを設定する。
【0093】
解析部140は、座標系80において、表示領域81の左辺と表示領域82gの右辺とが接するように表示領域82gを決定する。また、解析部140は、表示領域81の中心と表示領域82gの中心とが同じx軸に平行な直線上となるように、表示領域82gを決定する。これにより、表示領域82gは、左上の頂点の座標が座標系80における(-NW,+PH/2-NH/2)である、横の長さがNW、縦の長さがNHの長方形に決定される。
【0094】
図16は、表示領域を左上に配置する場合の座標系の一例を示す図である。解析部140は、検出したベクトルが左上である場合、座標系80において、表示領域81の左上にモニタ200に表示させる表示領域82hを設定する。
【0095】
解析部140は、座標系80において、表示領域81の上辺の左半分と表示領域82hの下辺とが接するように表示領域82hを決定する。これにより、表示領域82hは、左上の頂点の座標が座標系80における(+PW/2-NW,-NH)である、横の長さがNW、縦の長さがNHの長方形に決定される。
【0096】
なお、解析部140は、モニタ200とは別のモニタがさらにPC100に接続された場合も、同様に別のモニタの表示領域を決定する。ここで、解析部140は、決定した別のモニタの表示領域の一部が設定済みのモニタ200の表示領域と重複する場合、別のモニタの表示領域をずらす。
【0097】
図17は、別のモニタの表示領域を配置する場合の座標系の一例を示す図である。解析部140は、モニタ200とは別のモニタがさらにPC100に接続された場合、別のモニタについて実行されたベクトル検出の結果に基づいて、座標系80に別のモニタの表示領域83を設定する。なお、別のモニタの縦と横の解像度は、モニタ200と同様であるものとする。また、表示領域83は、第1の実施の形態に示した第3表示領域の一例である。
【0098】
座標系80には、内蔵モニタ104に表示させる表示領域81と、モニタ200に表示させる表示領域82とが設定されている。表示領域82の範囲は、表示領域82hと同様である。
【0099】
ここで、別のモニタの接続時のベクトル検出処理において検出されたベクトルが左である場合、解析部140は、表示領域82gと同様の範囲の表示領域83を、別のモニタの表示領域として決定する。すると、表示領域82の一部と表示領域83の一部とが重複する。解析部140は、重複領域のx軸方向の長さ(x方向の被り量)とy軸方向の長さ(y方向の被り量)とを比較する。そして、解析部140は、被り量が小さい方向に表示領域83をずらす。ここでは、解析部140は、y方向の被り量が小さいため、表示領域83を、y方向の被り量である+PH/2-NH/2だけ下方向にずらす。そして、解析部140は、表示領域83を、左上の頂点の座標が座標系80における(NW,0)である、横の長さがNW、縦の長さがNHの長方形に決定する。
【0100】
このように、解析部140は、表示領域82の一部と表示領域83の一部とが重複する場合、被り量が小さい方向に表示領域83をずらす。すると、表示領域83をずらす量が小さくなるため、解析部140は、表示領域81,82,83の位置関係を、PC100とモニタ200と別のモニタとの物理的な配置に近づけることができる。これにより、解析部140は、3以上のモニタが接続された場合についても適切に設定をすることができる。なお、解析部140は、表示領域82の一部と表示領域83の一部とが重複する場合、表示領域82をずらしてもよい。
【0101】
ここで、モニタ200の使用中に、モニタ200とPC100との物理的な配置が変更されることがある。そこで、解析部140は、モニタ200の使用中に表示領域の調整処理をする。
【0102】
図18は、表示領域の調整処理の一例を示す図である。解析部140は、モニタ200の使用中に、カメラ203がユーザ21を撮像したカメラ画像と、カメラ105がユーザ21を撮像したカメラ画像とに基づいて表示領域の調整をする。図18の例では、モニタ200の表示領域が内蔵モニタ104の表示領域の上に配置される設定であるものとする。
【0103】
カメラ制御部130は、モニタ200の使用中に、モニタ200のカメラ203にユーザ21を撮像させる。解析部140は、カメラ203が撮像したカメラ画像91aを解析し、カメラ画像91aに写るユーザ21が正面を向いているか否かを判定する。解析部140がカメラ画像91aに写るユーザ21が正面を向いていると判定した場合、カメラ制御部130は、PC100のカメラ105にユーザ21を撮像させる。
【0104】
解析部140は、カメラ105が撮像したカメラ画像を解析し、カメラ画像に写るユーザ21の顔の向きを特定する。例えば、カメラ画像91bが撮像された場合、解析部140は、カメラ画像91bを解析し、ユーザ21の顔の向きが上であると特定する。すると、解析部140は、表示領域の設定とユーザ21の顔の向きとが一致しているため、モニタ200とPC100との物理的な配置が設定通りであると判定する。
【0105】
また、例えば、カメラ画像91cが撮像された場合、解析部140は、カメラ画像91cを解析し、ユーザ21の顔の向きが左であると特定する。すると、解析部140は、表示領域の設定とユーザ21の顔の向きとが一致しないため、表示領域の設定に間違いの可能性があると判定する。そして、解析部140は、モニタ200を新規接続モニタとして表示領域の再設定を行う。なお、カメラ画像91aは、第1の実施の形態に示した第4カメラ画像の一例であり、カメラ画像91b,91cは、第1の実施の形態に示した第3カメラ画像の一例である。
【0106】
このように、解析部140は、カメラ画像91aに写るユーザ21が正面を向いているときに(つまり、ユーザ21がモニタ200の方向を向いているときに)カメラ105によって撮像されたカメラ画像91b,91cに基づいて、設定調整をする。これにより、解析部140は、使用中にモニタ200とPC100との物理的な位置関係が変更された場合、内蔵モニタ104の表示領域とモニタ200の表示領域との位置関係を変更することができる。以下、PC100が実行する処理の手順について、詳細に説明する。
【0107】
図19は、表示領域設定処理の手順の一例を示すフローチャート(その1)である。以下、図19に示す処理をステップ番号に沿って説明する。
[ステップS11]モニタ制御部120は、モニタを新規検出したか否かを判定する。例えば、モニタ制御部120は、接続インタフェース110を介して接続先のモニタ200から信号が検出された場合、モニタ200を新規検出したと判定する。モニタ制御部120は、モニタを新規検出したと判定した場合、処理をステップS14に進める。また、モニタ制御部120は、モニタを新規検出していないと判定した場合、処理をステップS12に進める。
【0108】
[ステップS12]モニタ制御部120は、PC100に接続された各モニタにカメラがあるか否かを判定する。モニタ制御部120は、各モニタにカメラがあると判定した場合、処理をステップS13に進める。また、モニタ制御部120は、各モニタにカメラがないと判定した場合、処理をステップS11に進める。
【0109】
[ステップS13]モニタ制御部120、カメラ制御部130および解析部140は、共同して、設定調整処理を実行する。設定調整処理の詳細については後述する(図22参照)。そして、処理がステップS11に進む。
【0110】
[ステップS14]モニタ制御部120は、新規検出したモニタの情報を保持する。例えば、モニタ制御部120は、ステップS11で検出したモニタ200の情報をクラス形式51で保持する。モニタ制御部120は、モニタ200の識別子をDeviceIDに格納し、モニタ200の縦の解像度をScreenHeightに格納し、モニタ200の横の解像度をScreenWidthに格納する。
【0111】
[ステップS15]モニタ制御部120は、顔の向きでベクトル検出する設定であるか否かを判定する。モニタ制御部120は、顔の向きでベクトル検出する設定であると判定した場合、処理をステップS16に進める。また、モニタ制御部120は、顔の向きでベクトル検出する設定ではない(指が指し示す向きをベクトルとして検出する設定である)と判定した場合、処理をステップS17に進める。
【0112】
[ステップS16]モニタ制御部120は、新規接続されたモニタを直視するよう促す画面を、新規接続されたモニタに表示させる。例えば、まず、モニタ制御部120は、内蔵モニタ104に画面61aを表示させる。そして、カメラ制御部130がカメラ105に撮像させたカメラ画像62aに写るユーザ21が正面を向いていることを解析部140が確認すると、モニタ制御部120は、モニタ200に画面61bを表示させる。そして、処理がステップS18に進む。
【0113】
[ステップS17]モニタ制御部120は、新規接続されたモニタを指で指すよう促す画面を、新規接続されたモニタに表示させる。例えば、モニタ制御部120は、モニタ200に画面71を表示させる。
【0114】
[ステップS18]カメラ制御部130は、カメラ105でユーザ21を撮像する。例えば、顔の向きでベクトル検出する設定である場合、カメラ制御部130は、カメラ105にカメラ画像62bを撮像させる。また、例えば、指が指し示す向きをベクトルとして検出する設定である場合、カメラ制御部130は、カメラ105にカメラ画像72を撮像させる。
【0115】
[ステップS19]解析部140は、撮像したカメラ画像を解析し、ベクトルを検出する。例えば、解析部140は、カメラ画像62bを解析し、カメラ画像62bに写るユーザ21が顔を向けている向きをベクトルとして検出する。ここで、解析部140は、人物の画像と顔の向きとが対応付けられた学習データを用いて学習した学習済みモデルによって、カメラ画像62bに写るユーザ21の顔の向きをベクトルとして検出する。
【0116】
また、例えば、解析部140は、カメラ画像72を解析し、カメラ画像72に写るユーザ21の指が指し示す向きをベクトルとして検出する。ここで、解析部140は、手を認識する学習済みモデルによって、カメラ画像72に写る手のランドマーク認識を行う。そして、解析部140は、手の形と指が指し示す向きとが対応付けられた学習データを用いて学習した学習済みモデルによって、カメラ画像72に写るユーザ21の指が指し示す向きをベクトルとして検出する。
【0117】
[ステップS20]解析部140は、ステップS19でベクトルを検出したか否かを判定する。解析部140は、ベクトル検出したと判定した場合、処理をステップS21に進める。また、解析部140は、ベクトル検出していないと判定した場合、処理をステップS15に進める。
【0118】
[ステップS21]解析部140は、内蔵モニタ104の横の解像度PWおよび縦の解像度PHを設定する。例えば、解析部140は、レジストリに設定された内蔵モニタ104の横の解像度をPWに設定する。また、解析部140は、レジストリに設定された内蔵モニタ104の縦の解像度をPHに設定する。また、解析部140は、新規接続されたモニタの横の解像度NWおよび縦の解像度NHを設定する。例えば、解析部140は、ステップS14で保持されたScreenWidthに格納された値を、NWに設定する。また、解析部140は、ステップS14で保持されたScreenHeightに格納された値を、NHに設定する。
【0119】
図20は、表示領域設定処理の手順の一例を示すフローチャート(その2)である。以下、図20に示す処理をステップ番号に沿って説明する。
[ステップS22]解析部140は、検出されたベクトルが上であるか否かを判定する。解析部140は、検出されたベクトルが上であると判定した場合、処理をステップS23に進める。また、解析部140は、検出されたベクトルが上ではないと判定した場合、処理をステップS24に進める。
【0120】
[ステップS23]解析部140は、新規接続されたモニタの表示領域の左上の頂点のx座標を示す変数Xに+PW/2-NW/2を代入する。また、解析部140は、新規接続されたモニタの表示領域の左上の頂点のy座標を示す変数Yに-NHを代入する。そして、処理がステップS37に進む。
【0121】
[ステップS24]解析部140は、検出されたベクトルが右上であるか否かを判定する。解析部140は、検出されたベクトルが右上であると判定した場合、処理をステップS25に進める。また、解析部140は、検出されたベクトルが右上ではないと判定した場合、処理をステップS26に進める。
【0122】
[ステップS25]解析部140は、新規接続されたモニタの表示領域の左上の頂点のx座標を示す変数Xに+PW/2を代入する。また、解析部140は、新規接続されたモニタの表示領域の左上の頂点のy座標を示す変数Yに-NHを代入する。そして、処理がステップS37に進む。
【0123】
[ステップS26]解析部140は、検出されたベクトルが右であるか否かを判定する。解析部140は、検出されたベクトルが右であると判定した場合、処理をステップS27に進める。また、解析部140は、検出されたベクトルが右ではないと判定した場合、処理をステップS28に進める。
【0124】
[ステップS27]解析部140は、新規接続されたモニタの表示領域の左上の頂点のx座標を示す変数Xに+PWを代入する。また、解析部140は、新規接続されたモニタの表示領域の左上の頂点のy座標を示す変数Yに+PH/2-NH/2を代入する。そして、処理がステップS37に進む。
【0125】
[ステップS28]解析部140は、検出されたベクトルが右下であるか否かを判定する。解析部140は、検出されたベクトルが右下であると判定した場合、処理をステップS29に進める。また、解析部140は、検出されたベクトルが右下ではないと判定した場合、処理をステップS30に進める。
【0126】
[ステップS29]解析部140は、新規接続されたモニタの表示領域の左上の頂点のx座標を示す変数Xに+PWを代入する。また、解析部140は、新規接続されたモニタの表示領域の左上の頂点のy座標を示す変数Yに+PH/2を代入する。そして、処理がステップS37に進む。
【0127】
[ステップS30]解析部140は、検出されたベクトルが下であるか否かを判定する。解析部140は、検出されたベクトルが下であると判定した場合、処理をステップS31に進める。また、解析部140は、検出されたベクトルが下ではないと判定した場合、処理をステップS32に進める。
【0128】
[ステップS31]解析部140は、新規接続されたモニタの表示領域の左上の頂点のx座標を示す変数Xに+PW/2-NW/2を代入する。また、解析部140は、新規接続されたモニタの表示領域の左上の頂点のy座標を示す変数Yに+PHを代入する。そして、処理がステップS37に進む。
【0129】
[ステップS32]解析部140は、検出されたベクトルが左下であるか否かを判定する。解析部140は、検出されたベクトルが左下であると判定した場合、処理をステップS33に進める。また、解析部140は、検出されたベクトルが左下ではないと判定した場合、処理をステップS34に進める。
【0130】
[ステップS33]解析部140は、新規接続されたモニタの表示領域の左上の頂点のx座標を示す変数Xに-NWを代入する。また、解析部140は、新規接続されたモニタの表示領域の左上の頂点のy座標を示す変数Yに+PH/2を代入する。そして、処理がステップS37に進む。
【0131】
[ステップS34]解析部140は、検出されたベクトルが左であるか否かを判定する。解析部140は、検出されたベクトルが左であると判定した場合、処理をステップS35に進める。また、解析部140は、検出されたベクトルが左ではない(左上である)と判定した場合、処理をステップS36に進める。
【0132】
[ステップS35]解析部140は、新規接続されたモニタの表示領域の左上の頂点のx座標を示す変数Xに-NWを代入する。また、解析部140は、新規接続されたモニタの表示領域の左上の頂点のy座標を示す変数Yに+PH/2-NH/2を代入する。そして、処理がステップS37に進む。
【0133】
[ステップS36]解析部140は、新規接続されたモニタの表示領域の左上の頂点のx座標を示す変数Xに+PW/2-NWを代入する。また、解析部140は、新規接続されたモニタの表示領域の左上の頂点のy座標を示す変数Yに-NHを代入する。
【0134】
図21は、表示領域設定処理の手順の一例を示すフローチャート(その3)である。以下、図21に示す処理をステップ番号に沿って説明する。
[ステップS37]解析部140は、新規接続されたモニタの表示領域の左上の頂点の座標を示す変数X,Yおよび新規接続されたモニタの横の解像度NWおよび縦の解像度NHで示される表示領域がすでに設定した表示領域と重複するか否かを判定する。解析部140は、すでに設定した表示領域と重複すると判定した場合、処理をステップS38に進める。また、解析部140は、すでに設定した表示領域と重複しないと判定した場合、処理をステップS41に進める。
【0135】
[ステップS38]解析部140は、新規接続されたモニタの表示領域とすでに設定した表示領域との重複領域のX方向の被り量がY方向の被り量より小さいか否かを判定する。解析部140は、X方向の被り量がY方向の被り量より小さいと判定した場合、処理をステップS39に進める。また、解析部140は、X方向の被り量がY方向の被り量以上であると判定した場合、処理をステップS40に進める。
【0136】
[ステップS39]解析部140は、変数Xをx方向の被り量だけ、すでに設定した表示領域と逆向きにずらす。つまり、解析部140は、変数Xに、X±x方向の被り量を代入する。そして、処理がステップS39に進む。
【0137】
[ステップS40]解析部140は、変数Yをy方向の被り量だけ、すでに設定した表示領域と逆向きにずらす。つまり、解析部140は、変数Yに、Y±y方向の被り量を代入する。
【0138】
[ステップS41]モニタ制御部120は、表示領域を設定するレジストリを検索する。
[ステップS42]モニタ制御部120は、表示領域を設定するレジストリに新規接続されたモニタの表示領域を設定する。モニタ制御部120は、新規接続されたモニタの表示領域の左上の頂点のx座標およびy座標として変数X,Yを符号付整数16進数に変換した値を設定する。また、モニタ制御部120は、符号付整数16進数に変換した値を設定する。
【0139】
[ステップS43]モニタ制御部120は、ビデオドライバを無効にする。
[ステップS44]モニタ制御部120は、ビデオドライバを有効にする。これにより、ステップS42で設定された表示領域が新規接続されたモニタに表示される。
【0140】
[ステップS45]モニタ制御部120は、設定が適切であるか否かを判定する。例えば、モニタ制御部120は、新規接続されたモニタの表示が適切であることを示す入力を受け付けた場合、設定が適切であると判定し、新規接続されたモニタの表示が適切ではないことを示す入力を受け付けた場合、設定が適切ではないと判定する。モニタ制御部120は、設定が適切であると判定した場合、処理をステップS11に進める。また、モニタ制御部120は、設定が適切ではないと判定した場合、処理をステップS15に進める。
【0141】
このように、解析部140は、新規接続されたモニタに顔を向けるまたは新規接続されたモニタを指で指し示すよう促したユーザ21を撮像したカメラ画像から、ユーザ21が顔を向けている向きまたは指で指し示す向きをベクトルとして検出する。これにより、解析部140は、内蔵モニタ104に対する新規接続されたモニタの位置をベクトルとして検出することができる。
【0142】
そして、解析部140は、表示領域81に対して検出したベクトルの方向に、新規接続されたモニタの表示領域を配置するよう決定する。モニタ制御部120は、解析部140が決定した表示領域の設定を適用する。これにより、解析部140は、ユーザ21がモニタ200に顔を向けるまたはモニタ200を指で指し示すだけでマルチモニタの設定ができるようにすることができる。このようにして、解析部140は、表示装置の設定を容易にすることができる。
【0143】
また、解析部140は、新規接続されたモニタの表示領域がすでに設定した表示領域と重複する場合、新規接続されたモニタの表示領域を被り量が小さい方向にずらす。すると、表示領域をずらす量が小さくなるため、解析部140は、表示領域の位置関係を、PC100と各モニタ200との物理的な配置に近づけることができる。これにより、解析部140は、3以上のモニタが接続された場合についても適切に設定をすることができる。
【0144】
図22は、設定調整処理の手順の一例を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。
[ステップS51]解析部140は、各モニタのカメラで撮像したカメラ画像を解析し、カメラ画像に写るユーザ21の顔が正面向きであるか否かを判定する。解析部140は、いずれかのカメラ画像に写るユーザ21の顔が正面向きであると判定した場合、処理をステップS52に進める。また、解析部140は、いずれのカメラ画像に写るユーザ21の顔も正面向きではないと判定した場合、処理を終了する。
【0145】
[ステップS52]カメラ制御部130は、PC100のカメラ105でユーザ21を撮像する。
[ステップS53]解析部140は、ステップS51でユーザ21の顔が正面向きであるカメラ画像を撮像したモニタの表示領域の設定をレジストリから取得する。解析部140は、内蔵モニタ104の表示領域81に対する、設定を取得した表示領域の方向を算出する。
【0146】
[ステップS54]解析部140は、ステップS52で撮像されたカメラ画像に写るユーザ21の顔の向きをベクトルとして検出する。そして、解析部140は、カメラ画像から検出したベクトルとステップS53で設定から算出した表示領域の方向とが一致するか否かを判定する。解析部140は、カメラ画像から検出したベクトルと設定から算出した表示領域の方向とが一致すると判定した場合、処理を終了する。また、解析部140は、カメラ画像から検出したベクトルと設定から算出した表示領域の方向とが一致しないと判定した場合、処理をステップS55に進める。
【0147】
[ステップS55]モニタ制御部120は、ステップS51でユーザ21の顔が正面向きであるカメラ画像を撮像したモニタを新規検出モニタに設定する。そして、ステップS14からの処理が実行される。
【0148】
このように、カメラ制御部130は、モニタに設置されたカメラで撮像したカメラ画像に写るユーザ21が正面を向いているときに(つまり、ユーザ21がモニタの方向を向いているときに)カメラ105にユーザ21を撮像させる。解析部140は、撮像されたカメラ画像に写るユーザ21の顔の向きのベクトルと、表示領域81に対する設定されたモニタの表示領域の向きとが一致するか否かを判定し、一致しない場合、新規検出モニタとして表示領域を再設定するよう決定する。これにより、解析部140は、使用中にモニタとPC100との物理的な位置関係が変更された場合、内蔵モニタ104の表示領域と当該モニタとの表示領域との位置関係を変更することができる。
【0149】
第2の実施の形態によれば、解析部140は、内蔵モニタ104に設置されたカメラ105がユーザ21を撮像したカメラ画像62b,72を解析してユーザ21の姿勢が示すベクトルを検出する。解析部140は、表示領域81を内蔵モニタ104に表示させ表示領域82aをモニタ200に拡張表示させる場合の、表示領域81に対する表示領域82aのコンピュータ処理上の座標系80における位置関係を、ベクトルに基づいて決定する。これにより、PC100は、表示領域81と表示領域82aとの位置関係を、内蔵モニタ104とモニタ200との物理的な位置関係に沿うように自動で設定することができる。よって、PC100は、表示装置の設定を容易にすることができる。
【0150】
また、モニタ制御部120は、モニタ200に顔を向けるよう促す画面をモニタ200に表示させ、解析部140は、カメラ画像62bからユーザ21の顔の向きを特定し、ユーザ21の顔の向きに基づいてベクトルを検出する。これにより、PC100は、ユーザ21がモニタ200に顔を向けるだけで表示装置の設定ができるようにすることができる。
【0151】
また、モニタ制御部120は、モニタ200を指し示すよう促す画面をモニタ200に表示させ、解析部140は、カメラ画像72からユーザ21の指が指し示す向きを特定し、ユーザ21の指が指し示す向きに基づいてベクトルを検出する。これにより、PC100は、ユーザ21がモニタ200を指し示すだけで表示装置の設定ができるようにすることができる。
【0152】
また、解析部140は、ユーザ21を撮像したカメラ画像を解析してユーザ21の姿勢が示すベクトルを検出し、表示領域83を別のモニタに拡張表示させる場合の、表示領域81に対する表示領域83の座標系80における位置関係を、ベクトルに基づいて決定する。そして、解析部140は、表示領域82の一部と表示領域83の一部とが重複する重複領域がある場合、座標系80における水平方向または垂直方向のうち重複領域の短手方向に、表示領域82または表示領域83をずらす。これにより、PC100は、3以上の表示装置が接続された場合についても適切に設定をすることができる。
【0153】
また、解析部140は、カメラ105が撮像したカメラ画像91b,91cに基づいて、内蔵モニタ104に対するユーザ21の顔の向きを特定する。解析部140は、モニタ200に設置されたカメラ203がカメラ画像91b,91cが撮像されるときに撮像したカメラ画像91aに基づいて、モニタ200に対するユーザ21の顔の向きを特定する。解析部140は、内蔵モニタ104に対するユーザ21の顔の向きとモニタ200に対するユーザ21の顔の向きとに基づいて、表示領域81に対する表示領域82の座標系80における位置関係を変更するか否かを決定する。これにより、PC100は、使用中にPC100とモニタ200の物理的な位置関係が変更された場合でも、位置関係を適切に変更することができる。
【0154】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0155】
1 第1表示装置
1a 第1カメラ
2 第2表示装置
3 ユーザ
4 第1カメラ画像
5 座標系
5a 第1表示領域
5b 第2表示領域
10 情報処理装置
11 処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22