(57)【特許請求の範囲】
【請求項１】
プロセッサと、このプロセッサに所定の動作を実行させる命令を保管する保管媒体とを備えた、オペレーティング・システム（Ｏ／Ｓ）によって動作されるシステムであって、前記所定の動作が、
アプリケーション・ソフトウェアによって、イメージング・デバイス・アプリケーション・プログラミング・インターフェイス（ＡＰＩ）を作成し、初期化するステップと；
前記ＡＰＩがイメージング・デバイスとイメージ情報を通信するために、前記システム上で、イメージング・デバイスのためのイメージング・デバイス・ドライバをオープンすることを定期的に試み、該イメージング・デバイスが前記システムと接続されている場合に該イメージング・デバイス・ドライバをオープンするステップと；
前記ＡＰＩが前記イメージング・デバイス・ドライバのオープンに成功した後に、前記イメージング・デバイスから前記システムへイメージ情報を転送するステップと；
を含むことを特徴とするシステム。
【請求項２】
オペレーティング・システム（Ｏ／Ｓ）によって動作されるシステムとイメージング・デバイスとの間でイメージ情報を転送する方法であって、
イメージ情報を転送するためのアプリケーション・ソフトウェアが、前記システム上で実行されて、イメージング・デバイス・アプリケーション・プログラミング・インターフェイス（ＡＰＩ）を作成し、初期化するステップと；
前記ＡＰＩが、前記イメージング・デバイスとイメージ情報を通信するために、前記システム上のイメージング・デバイス・ドライバをオープンすることを定期的に試み、イメージング・デバイスがホスト・システムと接続されている場合に当該イメージング・デバイス・ドライバをオープンするステップと；
前記ＡＰＩが前記イメージング・デバイス・ドライバのオープンに成功した後、イメージ情報を該イメージング・デバイスから前記システムへ転送するステップと
を含むことを特徴とする方法。
【請求項３】
オペレーティング・システム（Ｏ／Ｓ）によって動作されるシステムとイメージング・デバイスとの間でイメージ情報を転送する方法であって、
イメージ情報を転送するためのアプリケーション・ソフトウェアが、前記システム上で実行されて、イメージング・デバイス・アプリケーション・プログラミング・インターフェイス（ＡＰＩ）を作成し、初期化するステップと；
前記ＡＰＩが、前記イメージング・デバイスとイメージ情報を通信するために、前記システム上のイメージング・デバイス・ドライバをオープンすることを定期的に試みるステップと；
前記ＡＰＩが前記イメージング・デバイス・ドライバのオープンに成功した後、該ＡＰＩがイメージング・デバイス・ドライバをクローズして、前記アプリケーション・ソフトウェアに前記イメージング・デバイスが検出されたことを告知するステップと；
前記アプリケーション・ソフトウェアが、前記ＡＰＩが前記イメージング・デバイス・ドライバを再オープンするために、該ＡＰＩに信号送信するステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は画像処理の分野に関する。より詳細に言えば、本発明は、イメージング・デバイスとホスト・システムの間のイメージ情報の転送に関する。
【０００２】
（発明の背景）
カメラ等のイメージング・デバイスは、一般に静止もしくは動画（ビデオ）イメージ情報をフィルム、ビデオ・テープ、またはその他のメディア上にストアする。ディジタル・カメラは、イメージ情報をディジタル形式で取り込み、そのイメージ情報をフラッシュ・メモリ等のメモリ、もしくはディジタル記憶メディアにストアする。ディジタル・イメージ情報は、パーソナル・コンピュータ等のホスト・システムにダウンロードすることができる。その後は、ホスト・システム上に常駐するソフトウエア・アプリケーションを用いて、イメージ情報に対するイメージの回転、イメージのトリミング、あるいはその他のイメージの変更を行うことができる。
【０００３】
ホスト・システム上のイメージを処理するためにユーザは、イメージング・デバイスをホスト・システムに取り付け、当該イメージング・デバイスとインターフェースするアプリケーション・ソフトウエアを起動し、イメージング・デバイスとホスト・システムの間におけるイメージ情報の転送を行う。これらのタスクのそれぞれが複数のステップからなることもあり、イメージを扱おうとするコンピュータ操作の初心者を尻込みさせることになる。
【０００４】
（本発明の要約）
イメージング・デバイスとホスト・システムの間でイメージ情報を転送する方法が開示されている。ホスト・システムは、イメージング・デバイスが当該ホスト・システムに接続されていることを検出する。イメージング・デバイスの検出に応答して、１ないし複数イメージがイメージング・デバイスとホスト・システムの間で転送される。
【０００５】
本発明の他の特徴ならびに利点については、付随する図面ならびに以下の詳細な説明から明らかになろう。
【０００６】
（詳細な説明）
イメージング・デバイスとホスト・システムの間でイメージ情報を転送する方法が開示されている。一実施形態においては、イメージング・デバイスをホスト・システムに接続したとき、イメージ情報の転送が自動的に実行される。
【０００７】
イメージング・デバイスは、カメラ等のイメージ取り込みデバイスとすることができる。それに代えて、開示しているテクニックは、イメージ情報をストアする機能を有する任意のデバイスとともに使用することもできる。ホスト・システムは、イメージ情報を操作することができれば、任意のシステムであってよい。たとえばホスト・システムを、ＩｎｔｅｌのＰｅｎｔｉｕｍ（登録商標）またはＰｅｎｔｉｕｍ  ＩＩ（登録商標）プロセッサを搭載したＩＢＭ互換パーソナル・コンピュータ等のパーソナル・コンピュータとすることができる。しかしながら、それに代えてホスト・システムを、プリンタ、プロッタ、ファクシミリ・マシン、ディスプレイ・デバイス、または記憶デバイスとすることもできる。
【０００８】
図１は、ホスト・システム２０に取り付けられるされるイメージング・デバイス１０を示している。一実施形態においては、イメージング・デバイス１０がケーブル２２を介してホスト・システム２０のポート２６に取り付けられる。イメージング・デバイス１０は、好ましくは高いデータ転送レートをサポートするデータ転送プロトコルを使用してホスト・システム２０に接続される。一実施形態においては、イメージング・デバイス１０が、ユニバーサル・シリアル・バス（ＵＳＢ）接続を経由してホスト・システム２０に接続される。ＵＳＢ接続は、最大１２Ｍｂ／秒でデータを転送する。これに代えて、他の接続および１３９４プロトコル等のデータ転送プロトコルを使用してもよい。（ＵＳＢに関するより詳細な情報は、ＵＲＬ  ｈｔｔｐ：／／ｗｗｗ．ｕｓｂ．ｏｒｇ／のワールド・ワイド・ウェブから入手することができる。１３９４標準は、Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃ  Ｅｎｇｉｎｅｅｒｓすなわちアメリカ電気・電子通信学会によって維持され、配付されている。１３９４の一実装態様のＦｉｒｅｗｉｒｅ（ファイヤワイヤ）は、ＩＥＥＥ標準１３９４−１９９５に定義がある。）
【０００９】
図２および図３は、ホスト・システム２０のコンポーネントとイメージング・デバイス（カメラ）１０の間の関係およびメッセージングを示した実施形態である。図２は、イメージング・デバイス１０がホスト・システム２０に最初に接続されたときの、ホスト・システム２０のコンポーネントの間における情報の流れの一実施形態を示している。ホスト・システム２０は、オペレーティング・システム（Ｏ／Ｓ）４０およびホストのアプリケーション・ソフトウエア６０を包含する。ホスト・システム２０は、カメラ１０等のイメージング・デバイスがホスト・システム２０に取り付けられたとき、それを検出する。一実施形態においては、オペレーティング・システム４０が、ポート２６をポーリングすることによって、カメラ１０がシステムに取り付けられているか否かを検出する。オペレーティング・システム４０とポート２６の間のインターフェースとなるポート・ドライバ４２を使用してもよい。一実施形態においては、ポート２６がＵＳＢポートであり、ポート・ドライバがＵＳＢドライバである。
【００１０】
オペレーティング・システムは各種のオペレーティング・システムのいずれかとすることができる。一実施形態におけるオペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ（マイクロソフト・コーポレーション）によって開発されたＷｉｎｄｏｗｓ９５、またはＷｉｎｄｏｗｓ９８等のＷｉｎｄｏｗｓ（ウインドウズ）オペレーティング・システムである。Ｗｉｎｄｏｗｓ９８は、ポートをポーリングさせるフックを備えている。このほかのオペレーティング・システムは、この種のポーリングを実施できるように修正することができる。ポーリングは、ユーザがその実行を気付くことがないように、好ましくはバックグラウンドで実行される。これとは別に、ホストのアプリケーション・ソフトウエア６０がポート２６のポーリングを実行することもできる。しかしながら、キーボードの操作、マウスの動き等の各種のアクティビティのためにオペレーティング・システムがすでにセットアップされていることから、（ホストのアプリケーション・ソフトウエア６０ではなく）オペレーティング・システム４０によるポーリングには、パフォーマンス上の利点がある。以下の説明においては、例証目的からオペレーティング・システムによるポーリングはないものと仮定している。当業者であれば、アプリケーションによるこのポーリングを可能にすべく修正することが可能であろう。
【００１１】
カメラ１０がホスト・システム２０のポート２６に接続されると、ポート・ドライバ４２がオペレーティング・システム４０に信号を送り、カメラがホスト・システム２０に取り付けられたことを伝える。図１に（１）として示した矢印はこれを表している。オペレーティング・システム４０は、このデバイスをカメラとして識別し、矢印（２）で表したように、対応するソフトウエア・ドライバ４４をメモリ内にロードする。一実施形態においては、オペレーティング・システム４０がカメラ１０に問い合わせを行い、識別子を獲得する。オペレーティング・システム４０は、この識別子に対応するソフトウエア・ドライバ４４をロードする。この実施形態においては、カメラ・ドライバ４４がオペレーティング・システム４０によってロードされる。
【００１２】
オペレーティング・システム４０は、続いてこのカメラに対応する１又は複数のソフトウエア・アプリケーションをロードする。一実施形態においては、オペレーティング・システムはいくつかのソフトウエア・アプリケーションを登録させておく。あらかじめ決定された条件に一致すると（たとえば特定の識別子を有するカメラの検出）、登録済みのホスト・ソフトウエア・アプリケーションがロードされる。この場合、矢印（３）により示されるように、ホストの（そのカメラ用の）アプリケーション・ソフトウエア６０がロードされる。一実施形態においては、カメラ・ドライバ４４がオペレーティング・システム４０に信号を送り、ホストのアプリケーション・ソフトウエア６０を起動する。ホストのアプリケーション・ソフトウエア６０は、イメージング・デバイス（カメラ）１０とホスト・システム２０の間のイメージ情報の転送を開始する。ホストのアプリケーション・ソフトウエア６０が、イメージの処理を行うことも考えられる。たとえば、ホストのアプリケーション・ソフトウエア６０が、このイメージに対する伸張および／または色補正を実行することができる。さらに、ホストのアプリケーション・ソフトウエア６０を、回転、トリミング、およびその他の画像操作機能を実行するものとしてもよい。
【００１３】
Ｗｉｎｄｏｗｓ９８等の一部のオペレーティング・システムにおいては、ソフトウエア・アプリケーションが起動されると特定のイベントの生成が可能になる。たとえば、カメラ・ドライバ４４に、「カメラの接続が検出された」または「カメラのシャッタが押された」といった登録済みイベントをセットアップすることができる。つまり、カメラ１０が取り付けられたとき、ホストのアプリケーション・ソフトウエア６０等のアプリケーションを自動的に起動するようにオペレーティング・システムをセットアップすることができる。
【００１４】
一実施形態においては、ホスト・システム２０にカメラ１０が取り付けられたとき、カメラ・ドライバ４４またはホストのアプリケーション・ソフトウエア６０がホスト・システム２０にインストールされていないと、ポート２６に取り付けられているデバイス用のカメラ・ドライバ４４および／またはホストのアプリケーション・ソフトウエア６０の供給がユーザに対して求められる。このインストールが完了すると、前述したようにプロセスが進められる。
【００１５】
図３は、ホストのアプリケーション・ソフトウエア６０が起動された後の、ホスト・システムのコンポーネント間における情報の流れの一実施形態を示している。この実施形態においては、ホストのアプリケーション・ソフトウエア６０は、ロードされた後に矢印（４）で示されるように、カメラのアプリケーション・プログラミング・インターフェース（ＡＰＩ）６２を生成し、初期化する。カメラＡＰＩ  ６２は、バックグラウンド・スレッドにおいてそのタスクを実行することができる。これによって、ホストのアプリケーション・ソフトウエア６０はカメラＡＰＩ  ６２の完了を待つことなく別のタスクを実行することができる。一実施形態においては、矢印（５）で示されるように、カメラＡＰＩ  ６２がＯ／Ｓ依存のダイナミック・リンク・ライブラリ（ＤＬＬ）６４をロードするＣＯＭオブジェクトとなる。カメラＡＰＩ  ６２は、ＤＬＬ  ６４を介してオペレーティング・システム４０と通信する。（別の実施形態においては、カメラＡＰＩ  ６２にＤＬＬ  ６４が組み込まれる。）次にオペレーティング・システム４０が、矢印（６）により示すように、カメラ・ドライバ４４およびポート・ドライバ４２を介してカメラ１０と通信する。
【００１６】
図４は、ポーリング初期化プロセスの一実施形態を示している。このポーリング初期化プロセスは、オペレーティング・システムがホストのアプリケーション・ソフトウエアを開くところから開始する。ホストのアプリケーション・ソフトウエア６０は、続いてカメラＡＰＩ  ６２を生成し、初期化する。一実施形態においては、ホストのアプリケーション・ソフトウエア６０が、カメラＡＰＩがポーリング・プロセスに成功すると、ホストのアプリケーション・ソフトウエア６０が通知を受けられるように、それ自体をカメラＡＰＩのコールバック・リストに追加する。
【００１７】
一実施形態においては、初期化時にカメラＡＰＩが内部変数をリセットし、Ｏ／Ｓ依存のＤＬＬをロードし、バックグラウンド・スレッドを生成し、それを開始する。その後カメラＡＰＩは、カメラ・ドライバを開くことを試みるバックグラウンド・スレッドのキューにメッセージを挿入する。（ドライバは、ドライバとの接続を設定することによって「開かれる」。）一実施形態においては、カメラが取り付けられているときにのみカメラ・ドライバが開かれる。カメラ・ドライバが開けなければ、カメラはホスト・システムに取り付けられていない。カメラ・ドライバが開ければ、カメラはホスト・システムに取り付けられている。一実施形態においては、カメラＡＰＩ  ４４は、０．５秒ごとにカメラ・ドライバを開くことを試みる。
【００１８】
図５は、カメラＡＰＩ  ６２とホストのアプリケーション・ソフトウエア６０の間のポーリング・プロセスの一実施形態を示している。この実施形態においては、カメラＡＰＩ  ６２がカメラ・ドライバを開くことを試みる。それがカメラ・ドライバを開くことに成功すると、カメラＡＰＩがカメラ・ドライバを閉じ、そのコールバック・キュー内にあるアプリケーションに通知する。ホストのアプリケーション・ソフトウエア６０は、カメラＡＰＩのコールバック・キュー内にあるので、カメラが検出されたことが通知される。
【００１９】
この実施形態においては、ホストのアプリケーション・ソフトウエア６０がカメラＡＰＩ  ６２に信号を送り、カメラ・ドライバ４４を開かせることによってカメラ・ドライバ４４が再度開かれ、互換カメラがチェックされる。続いてホストのアプリケーション・ソフトウエア６０は、カメラＡＰＩ  ４４（およびオペレーティング・システム４０およびドライバ４４ならびに４２）を介して各種のコマンドをカメラ１０に送る。たとえば、ホストのアプリケーション・ソフトウエア６０は、カメラ内にストアされているイメージの数を要求することができる。またホストのアプリケーション・ソフトウエア６０は、イメージの名前のリストおよびイメージのサイズを要求し、あるいは特定のイメージを要求することができる。
【００２０】
図６は、イメージング・デバイスとホスト・システムの間の、イメージ転送プロセスの一実施形態を示したフローチャートである。この場合のイメージング・デバイスはカメラであり、ホスト・システムはパーソナル・コンピュータである。このフローチャートは、ブロック１００から開始する。プロセスはブロック１０２に進み、そこでホストのアプリケーション・ソフトウエアがカメラＡＰＩを生成する。カメラＡＰＩは、ブロック１０４において、オペレーティング・システム依存のＤＬＬをロードする。ブロック１０６においては、カメラＡＰＩによってカメラが有効であるか否かが判断される。
【００２１】
ブロック１０８において、カメラが有効でなければフローチャートはブロック１０６に戻る。しかしながらカメラが有効であれば、プロセスはブロック１１０に進む。ブロック１１０においては、カメラＡＰＩがメッセージをホストのアプリケーション・ソフトウエアに送り、カメラが有効なことを示す。ブロック１１２においては、ホストのアプリケーション・ソフトウエアがカメラ・ドライバを開くことを要求する。カメラＡＰＩは、ブロック１１４で示されるように、カメラ・ドライバを開くことによってこれに応答する。ドライバを開くプロセスは、カメラ・ドライバとの接続を設定することを意味する。ブロック１１６においては、ホストのアプリケーション・ソフトウエアが、カメラからホスト・システムへのイメージの転送を要求する。カメラＡＰＩは、ブロック１１８において、カメラからホストのアプリケーション・ソフトウエアにイメージ情報を転送することによって応答する。イメージ情報には、イメージのイメージ・ピクセル・データをはじめ、カラー・パレット情報、圧縮情報、および方向情報等が含まれることになる。このフローチャートは、ブロック１２０において終了する。
【００２２】
図７は、カメラ等のイメージング・デバイスがホスト・システムに取り付けられたことを検出するプロセスの一実施形態を示したフローチャートである。このフローチャートは、ブロック２００から開始する。続いてブロック２０２に進み、オペレーティング・システムが、カメラが有効であるか否かを判断する。これは、ＵＳＢドライバ等のポート・ドライバの補助を借りて行ってもよい。カメラが有効でなければ、フローチャートはブロック２０２に戻る。カメラが有効であれば、ブロック２０４からブロック２０６にプロセスが引き継がれ、そこでオペレーティング・システムがカメラ・ドライバをロードする。
【００２３】
一実施形態においては、Ｗｉｎｄｏｗｓ９８等のオペレーティング・システムが使用される。Ｗｉｎｄｏｗｓ９８では、ブロック２０８によって示されるように、ドライバからオペレーティング・システムに、カメラがホスト・システムに接続されていることを（接続イベント）伝えることができる。続いてオペレーティング・システムは、この接続イベント用に登録されているアプリケーションを開く。この場合、ブロック２１０として示すように、このカメラ用のホストのアプリケーション・ソフトウエアが起動される。この後、このフローチャートは、図６に示したフローチャートに引き継がれる。
【００２４】
オペレーティング・システムから、接続イベントに基づいてアプリケーションを開く方法が提供されない場合は、ブロック２０８ならびに２１０に示したステップに代えて「サービス」を使用する実施形態が考えられる。このサービスは、ユーザがインストールし、ホスト・システムのブート・アップ時にホスト・システムによって自動的に起動される。このサービスは、カメラが検出されると、ホストのアプリケーション・ソフトウエアを開く。一実施形態においては、このサービスがカメラＡＰＩを使用して、カメラが有効であるか否かを判断する。つまり、このサービスは、図６と類似の態様でミニ‐ホスト・アプリケーションとして機能する。しかしながら、このサービスは、カメラ・ドライバとの接続が設定されたとき、ホストのアプリケーション・ソフトウエアを起動する。その後、ホスト・アプリケーションは、カメラからイメージを転送するためのカメラ・ドライバとの独自の接続を設定する。
【００２５】
一実施形態においては、ホストのアプリケーション・ソフトウエア６０およびカメラ・ドライバ４４が、カメラ１０とともに出荷される。ホストのアプリケーション・ソフトウエア６０およびカメラ・ドライバ４４は、フロッピーディスクまたはＣＤ−ＲＯＭを介して配付されることもある。それに代えて、ホストのアプリケーション・ソフトウエア６０およびカメラ・ドライバ４４を、ワールド・ワイド・ウェブ経由でダウンロードすることもできる。ホストのアプリケーション・ソフトウエア６０およびカメラ・ドライバ４４は、ハードディスク、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、あるいはフラッシュ・メモリ等のホスト・システム上の記憶メディアにインストールされる。
【００２６】
以上述べた明細においては、本発明がその具体的な実施形態を用いて説明されている。しかしながら、本開示によって恩恵を受ける者であれば、特許請求の範囲に示される、より広い本発明の真意ならびに範囲から逸脱することなく、これらに対する各種の変形ならびに変更をなし得ることは明らかである。したがって、本明細書ならびに図面は、限定の意味としてではなく、説明に関するものであると考えるべきである。
【図面の簡単な説明】
【図１】  ホスト・システムにアタッチされるイメージング・デバイスを示している。
【図２】  イメージング・デバイス１０がホスト・システム２０に最初に接続されたときの、ホスト・システムのコンポーネントの間における情報の流れの一実施形態を示している。
【図３】  ホストのアプリケーション・ソフトウエア６０が起動された後の、ホスト・システムのコンポーネント間における情報の流れの一実施形態を示している。
【図４】  ポーリング初期化プロセスの一実施形態を示している。
【図５】  カメラＡＰＩ  ６２とホストのアプリケーション・ソフトウエア６０の間のポーリング・プロセスの一実施形態を示している。
【図６】  イメージング・デバイスとホスト・システムの間の、イメージ転送プロセスの一実施形態を示したフローチャートである。
【図７】  カメラ等のイメージング・デバイスがホスト・システムにアタッチされたことを検出するプロセスの一実施形態を示したフローチャートである。
【図１】
0004444500.tif 000002
【図２】
0004444500.tif 000003
【図３】
0004444500.tif 000004
【図４】
0004444500.tif 000005
【図５】
0004444500.tif 000006
【図６】
0004444500.tif 000007
【図７】
0004444500.tif 000008