説明

画像圧縮方法、画像圧縮装置およびシステム

【課題】画像の圧縮を迅速かつ効率的におこなうこと。
【解決手段】システム100は、サーバ101とクライアント102がネットワーク110で接続され、クライアント102の操作コマンドに基づきサーバ101が処理をおこない、デスクトップ画像を圧縮してクライアント102に送信する。サーバ101は、圧縮する画像データについて、各画素の色を複数スレッドの同時並行処理によりそれぞれ検出し、1列の画素の並びにおける同一色連続長さを求め、同一色連続長さの情報に基づき、画像データを圧縮する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像を圧縮する画像圧縮方法、画像圧縮装置およびシステムに関する。
【背景技術】
【0002】
クラウド・コンピューティングでは、多くのアプリケーションの動作により、高速なネットワーク通信が必要になる。近年では、クライアントの端末は、サーバ側に操作コマンドを送り、サーバ側が操作コマンドに対応した処理を実行するDaaS(Desktop as a Service)のサービスが提供されている。このようなクラウド・コンピューティングを利用する例として、製品設計の分野ではCAD画像(デスクトップ画像)の転送がある。このデスクトップ画像は、クラウドのサーバ側が生成してクライアント(特にシンクライアント)の端末に転送する。この際、ネットワークの負荷を低減するために、サーバ側では、デスクトップ画像を圧縮して転送するようになっている。
【0003】
たとえば、画像圧縮等に用いることができる画像認識の技術として、一定長さ以上の画素の並び(ラン)を抽出して、文字領域を抽出する技術がある(たとえば、下記特許文献1参照。)。また、デスクトップ画像を圧縮する技術としては、画面を小ブロックに分割し、各ブロック内で同一色の矩形を検索してタイリングする技術がある(たとえば、下記非特許文献1参照。)。また、画像処理に特化したGPU(Graphic Processing Unit)を用い、全画面を複数のブロックに分割し、1ブロックの処理をGPUの1スレッドに割り当て、複数のプロセッサで並列処理する技術がある(たとえば、下記非特許文献2参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平1−217583号公報
【非特許文献】
【0005】
【非特許文献1】Tristan Richardson、“The RFB Protocol”、[online]、26,November,2010、RealVNC Ltd、[平成23年8月15日検索]、インターネット<URL:http://www.realvnc.com/docs/rfbproto.pdf>
【非特許文献2】YongLIU、外2名、“gTiledVNC−a22Mega−pixel Display Wall Desktop Using GPUs and VNC”、Department of Computer Science,University of Tromsφ、[平成23年8月15日検索]、インターネット<URL:http://www.ub.uit.no/munin/bitstream/handle/10037/2959/appendix_b.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0006】
クラウド・コンピューティングを利用する場合、多数のクライアントからのアクセスにより、高負荷なCADアプリケーションが同時に動作することになり、対応してサーバのCPU、およびGPU負荷が高くなる。また、上記のようなデスクトップ画像を圧縮するための圧縮処理について、GPUを効率的に用いた並列処理がおこなえなかった。
【0007】
すなわち、上記従来の技術による画像圧縮処理では、GPUは各ブロックの処理で画素を探すために大量のメモリ比較処理が必要となった。画像処理に特化したGPUにおいては、メモリアクセスに時間がかかり、GPUにおけるメモリ処理は、CPUよりも低速である。したがって、上記のようにブロック分割による並列化処理をおこなう際に、メモリアクセスに時間がかかり、合計の処理時間は短縮することができなかった。並列プロセッサ固有の問題として、1.メモリアクセスが遅く、特に、メモリ比較処理でメモリのアクセス位置がとびとびになると、急激に低下する。2.分岐処理が悪影響を及ぼし、例として、32個のスレッドが同期をとりながら進行するので、1スレッドが長い探索に分岐すると、他のスレッドも同期のために待つ必要がある。このようなGPUでの処理時間の遅延によってクライアントに転送するまでの時間がかかることとなり、クライアント側での設計作業等を迅速に遂行することができなくなる。
【0008】
製品設計の分野でクラウド・コンピューティングを利用する場合、サーバ側のCPUおよびGPUに負荷をかけずにアプリケーションが快適に動作して、デスクトップ画像の圧縮処理等を高速に完了でき、クライアントに転送する手法が必要となる。
【0009】
開示の画像圧縮方法、画像圧縮装置およびシステムは、上述した問題点を解消するものであり、画像の圧縮を迅速かつ効率的におこなうことを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するため、開示技術は、圧縮する画像データについて、各画素の色を複数スレッドの同時並行処理によりそれぞれ検出し、1列の画素の並びにおける同一色連続長さを求め、前記同一色連続長さの情報に基づき、前記画像データを圧縮すること、を含む。
【発明の効果】
【0011】
開示の画像圧縮方法、画像圧縮装置およびシステムによれば、画像の圧縮を迅速かつ効率的におこなうことができるという効果を奏する。
【図面の簡単な説明】
【0012】
【図1】図1は、実施の形態にかかる画像圧縮装置を含むシステムを示す図である。
【図2】図2は、実施の形態にかかる画像圧縮処理の手順を示すフローチャートである。
【図3】図3は、GPUがおこなう圧縮高速化テーブルの作成処理の概要図である。
【図4】図4は、GPUがおこなう圧縮高速化テーブルの作成処理の手順を示すフローチャートである。
【図5】図5は、CPUがおこなう画像圧縮処理の手順を示すフローチャートである。
【図6】図6は、バックグラウンド色の決定にかかる処理内容を詳細に示したフローチャートである。
【図7】図7は、同一色の矩形を検出する処理内容を詳細に説明したフローチャートである。
【図8】図8は、CPUがおこなう圧縮処理の概要図である。
【図9】図9は、図1に示した画像圧縮装置を用いたシステムの適用例を示す図である。
【発明を実施するための形態】
【0013】
(システム構成例)
以下に添付図面を参照して、開示技術の好適な実施の形態を詳細に説明する。図1は、実施の形態にかかる画像圧縮装置を含むシステムを示す図である。このシステム100は、画像圧縮装置として機能するサーバ101と、クライアント102とからなる。このシステム100では、たとえば、クライアント102がサーバ101に操作コマンドを送り、サーバ101が操作コマンドに対応した処理を実行し、クライアント102に操作コマンドに対応したCAD画像(デスクトップ画像)等のデータを送信するDaaSのサービスを利用する。
【0014】
クライアント102は、CPU102aおよび図示しないROM,RAM等のメモリを含み、キーボード103やマウス104等の操作により、所望する処理の操作コマンドをネットワーク110を介してサーバ101に送信する。ディスプレイ105には、操作および処理内容が表示される。
【0015】
サーバ101は、GPU101a、CPU101b、図示しないROM,RAM等を含む。このサーバ101には、予め製品設計用のアプリケーション、たとえばCADアプリケーションが格納されているディスク装置120が接続されている。そして、サーバ101は、ネットワーク110を介してクライアント102から操作コマンドを受信すると、CPU101bおよびGPU101aがCADアプリケーションを実行し、実行結果であるデスクトップ画像(CAD画像)をネットワーク110を介してクライアント102に送信する。クライアント102は、受信したデスクトップ画像をディスプレイ105に表示する。
【0016】
サーバ101は、全体の処理をCPU101bが統括制御し、GPU101aは、CPU101bと分担して画像処理を実行する。GPU101aについては、マルチコアのプロセッサで構成され、プログラム(CADアプリケーション)実行時における複数のスレッドを並列に同時実行する。
【0017】
(デスクトップ画像の圧縮処理内容)
つぎに、サーバ101が実行するデスクトップ画像の圧縮処理内容について説明する。サーバ101は、GPU101aとCPU101bとが分担してデータ量が大きいCAD画像等のデスクトップ画像を圧縮処理する。GPU101aは、デスクトップ画像の圧縮にかかるプレ処理(後述する圧縮高速化テーブルの作成)を実行し、このGPU101aの情報を基にCPU101bが圧縮処理を実行する。
【0018】
(画像圧縮処理の手順)
図2は、実施の形態にかかる画像圧縮処理の手順を示すフローチャートである。GPU101aは、CPU101bがおこなう圧縮処理のプレ処理として、クライアントに送信するデスクトップ画像を読み込み、圧縮高速化テーブルを作成し、この圧縮高速化テーブルをCPU101bに出力する。
【0019】
はじめに、GPU101aは、クライアントに送信するデスクトップ画像の全画面を所定のブロック、たとえば16×16の画像の小ブロックに分割し、N個のブロックを得る(ステップS201)。このN個は、たとえば、GPU101aが有するN個(たとえば256個)のプロセッサに対応して設定する。なお、サーバ101は、新たなデスクトップ画像を送信する際に、前回、クライアント102に送信したデスクトップ画像との差分のみを抽出し、この差分のデスクトップ画像に対する圧縮処理をおこなう構成とすることもでき、この場合には、よりネットワーク110上でのデータ量を削減できる。
【0020】
つぎに、N個のプロセッサによる並列処理を開始する(ステップS202)。N個のプロセッサがおこなう各処理(ステップS203)について説明すると、1つのプロセッサは、処理番号(1〜N)から自プロセッサが処理するブロックを特定し(ステップS213)、この処理ブロックについて圧縮高速化テーブルを作成する(ステップS214)。N個のプロセッサは、それぞれこの圧縮高速化テーブルを作成し、CPU101bに転送する。この後、CPU101bは、圧縮高速化テーブルを利用した圧縮処理を実行する(ステップS204)。
【0021】
(GPUがおこなうプレ処理について)
図3は、GPUがおこなう圧縮高速化テーブルの作成処理の概要図である。GPU101aは、図2に示す1つの小ブロック(16×16画素=256画素)について、同時に256スレッドの起動を開始する。この際、X座標について、同一色の画素の並びの個数(同一色シーケンス数)をMとする。図3に示す例では、最上段1列について、左から順に、R(赤)画素の同一色連続長さ(Run Length)が3、G(緑)画素の同一色連続長さが5、R(赤)画素の同一色連続長さが3、B(青)画素の同一色連続長さが2、赤画素の同一色連続長さが3であったとする。この場合、この1列あたりの同一色シーケンス数M=5である。たとえば、1列あたり平均M=5であると、図3全体では、M=80となり、256(=16×16)に比してMの数は小さくなる。GPU101aでは、上記同一色の連続数(Run Length)を、CPU101bに転送する。
【0022】
図4は、GPUがおこなう圧縮高速化テーブルの作成処理の手順を示すフローチャートである。図2のステップS214の処理内容の詳細を示している。GPU101aは、図2により256分割された1つの小ブロックについて、同時に256スレッドの起動を開始する(ステップS401)。GPU101aのN(256)個の各プロセッサに対し、スレッド番号M(1〜256)から自プロセッサが処理するデスクトップ画像上での座標を指定する(ステップS411)。
【0023】
ここで、X,Y座標について、各スレッドごとに処理開始する座標位置を異ならせて同時並列処理をおこなう。たとえば、座標Xについて、X=M%16,Y=M/16とすると、スレッド1は、M=1であり、座標(X,Y)=(1,0)、スレッド128は、M=128であり、座標(X,Y)=(0,8)、スレッド256は、M=256であり、座標(X,Y)=(0,16)の位置から処理を開始する。なお、[%]は割り算の余り、[/]は割り算の商である。
【0024】
つぎに、各スレッド(1〜256)は、同一色連続長さを初期値(0)とし(ステップS412)、1列(最大16画素)以下であるか判断し(ステップS413)、この1列(最大16画素)の間において、他のスレッドで検出され、X軸方向に同一色で連続する画素があれば、同一色連続長さに1を加算する(ステップS414)。ここで同一色ではない場合、あるいは最大16画素を超えた場合には、ステップS413,S414のループを抜けて終了する。
【0025】
上記処理により、図3に示したように、同一色連続長さが得られ、この同一色連続長さ(Run Length)をCPU101bに転送し、終了する。
【0026】
上記処理によれば、異なる1画素ごとに対応したスレッドが同時並行処理され、高速処理できるようになる。また、ステップS414による同一色連続長さの加算はメモリ領域へのアクセスがシリアルである(アドレスが連続している)ため、GPU101aが用いるメモリへのアクセスを効率的におこなえる。特に、GPU101aでは、水平方向のX軸(1軸)での同一色連続長さ(Run Length)だけを並列計算するため、メモリ上でも連続する領域となり、GPU101aに適合した処理であり、高速化できる。
【0027】
(CPUがおこなう圧縮処理について)
つぎに、CPU101bがおこなう圧縮処理について説明する。図5は、CPUがおこなう画像圧縮処理の手順を示すフローチャートである。CPU101bは、GPU101aから同一色連続長さ(Run Length)を取得する(ステップS501)。なお、この際、同一色連続長さに対応した同一色シーケンス数Mは、最大の256個以下となる。上記図3に示す例ではM=80で済む。
【0028】
そして、同一色連続長さに基づき、デスクトップ画面上において、最も出現する色をバックグラウンド(背景色)としてエンコード(圧縮処理)する(ステップS502)。この処理は、同一色シーケンス数M回のループ処理でおこなわれる(詳細は後述する)。
【0029】
つぎに、ステップS502で判定したバックグラウンド以外の色の画素を探す(ステップS503)。この処理は、最大でも同一色シーケンス数M回のループ処理でおこなえる。
【0030】
この後、ステップS503でみつかった画素を左上の座標位置にもつ色について、面積最大となる矩形を検出する(ステップS504)。この処理では、X軸方向についてのループ処理は無く、Y軸方向に最大でも16回のループ処理で済む。
【0031】
最後に、ステップS504で検出された矩形の色、左上座標位置、縦横(X,Y)サイズをエンコードし(ステップS505)、処理を終了する。なお、この後、CPU101bは、ステップS502で処理したエンコード後のバックグラウンドの情報と、ステップS505で処理したエンコード後の各矩形の情報をネットワーク110を介してクライアント102に送信する。
【0032】
クライアント102では、CPU102aが受信したバックグラウンドの情報をデコード(復号)して、デスクトップのバックグラウンド(背景色)としてディスプレイ105に表示する。また、CPU102aは、この背景色上に、受信した各矩形の情報をデコード(復号)して、各座標位置に対応する縦横サイズおよび色でディスプレイ105に表示する。
【0033】
図6は、バックグラウンド色の決定にかかる処理内容を詳細に示したフローチャートである。CPU101bが実行する図5のステップS502の処理の詳細を示している。はじめに、出現した色であるColor[256]と、最大出現色であるMaxcolorと、最大出現数MaxCntをそれぞれ0で初期化する(ステップS601)。そして、以下の処理について、画素数256に対応して、変数iが0から255までカウントするまでの間処理実行する(ステップS602)。
【0034】
まず、出現したColorData[i]が出現済みColorにあるか判断する(ステップS603)。ここで、新たな色のため出現済みColorでなければ(ステップS603:No)、ColorData[i]を新規登録する。また、ColorData[i]の出現数にRle(Run Lengthの略)[i]を設定する。また、変数iにRle[i]を加算する(ステップS604)。一方、出現済みColorであれば(ステップS603:Yes)、同じ色であるColorData[i]の出現数にRle[i]を加算する。また、変数iにRle[i]を加算する(ステップS605)。
【0035】
上記ステップS604あるいはステップS605の実行後、ColorData[i]の出現数が最大出現数MaxCntより大きいかを判定する(ステップS606)。ColorData[i]の出現数が最大出現数MaxCntより大きければ(ステップS606:Yes)、ステップS607に移行し、ColorData[i]の出現数が最大出現数MaxCntより大きくなければ(ステップS606:No)、ステップS607を実行せずにステップS602に戻る。
【0036】
ステップS607では、最大出現色Maxcolorに、ColorData[i]を設定する。また、最大出現数MaxCntにColorData[i]の出現数を設定する(ステップS607)。以下、ステップS602に戻り異なる画素iについて処理を継続する。以上の処理により最大出現色であるMaxcolorが示す色がバックグラウンド(背景色)として決定される。
【0037】
図7は、同一色の矩形を検出する処理内容を詳細に説明したフローチャートである。CPU101bが実行する図5のステップS504の処理の詳細を示している。はじめに、処理済みフラグflg[256]を0で初期化する(ステップS701)。Y軸について変数jが0から16までの間でループ処理をおこなう(ステップS702〜ステップS712の処理)。また、X軸について、変数iが0から16までの間でループ処理をおこなう(ステップS703〜ステップS711の処理)。
【0038】
そして、ステップS503でも使った画素のColorDataについて、このColorData[i+16×j]はバックグラウンドの色と等しい(同じである)か判断する(ステップS704)。バックグラウンドと同じ色であれば(ステップS704:Yes)、処理を抜けてステップS703に戻る。異なる色であれば(ステップS704:No)、処理済みフラグflg[i+16×j]が1(同色)と等しいか判断する(ステップS705)。等しければ(ステップS705:Yes)、ステップS703に戻る。
【0039】
ステップS705の結果、等しくなければ(ステップS705:No)、処理済みフラグflg[i+16×j]からflg[i+16×j+Rle[i+16×j]]までの画素に1を設定する(ステップS706)。Rleは、各画素ごとに見た同一色連続長さである。
【0040】
つぎに、Y軸について変数kがj+1から16までの間でループ処理をおこなう(ステップS707〜ステップS710の処理)。そして、Rle[i+16×j]とRle[i+16×k]が等しい(色)か判断する(ステップS708)。等しくなければ(ステップS708:No)、ステップS703に戻る。等しければ(ステップS708:Yes)、処理済みフラグflg[i+16×k]からflg[i+16×k+Rle[i+16×k]]まで1(同色)を設定する(ステップS709)。
【0041】
以上の処理により、見つかった画素を左上にもち同一色で、かつ面積が最大の矩形を検出することができる。そして、上記の処理によれば、X軸方向は、プレ圧縮により1列分の処理が既におこなわれているので、X軸方向について新たに同一色の範囲検出のためのループ処理は不要である。Y軸方向についても、上記X軸の1列について既に同一色が検出されているため、全体の16列について最大16回分のループ処理で済む。このように、CPU101bがおこなうバックグラウンド上での異なる色の範囲(矩形)検出は、全体のループ回数を少なくでき、CPU101bの圧縮処理を高速化できるようになる。
【0042】
図8は、CPUがおこなう圧縮処理の概要図である。図8には、図3と同じ1つの小ブロック(16×16画素)について記載してある。CPU101bは、各画素ごとの色の配列ColorData[256]を出力する。図8に示す例では、ColorData[0]={256,0,0}、ColorData[1]={256,0,0}、ColorData[2]={256,0,0}、ColorData[3]={0,255,0}、…となる。{}内は、赤(R)、緑(G)、青(B)の順とする。
【0043】
また、CPU101bは、各画素ごとの同一色連続長さRle[256]を作成し、出力する。図8に示す例では、Rle[0]=3、Rle[1]=2、Rle[2]=1、Rle[3]=5である。CPU101bは、これらColorData[256]と、Rle[256]に基づき、バックグラウンド(背景色)と、バックグラウンド上での矩形の色、左上座標位置、縦横サイズを求めて、画像データを圧縮し、クライアント102に転送する。
【0044】
図9は、図1に示した画像圧縮装置を用いたシステムの適用例を示す図である。図9において、ネットワーク110は、サーバ901,902とクライアント931〜934とが通信可能なネットワークであり、たとえば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、携帯電話網などで構成される。
【0045】
サーバ902は、クラウド920を構成するサーバ群(サーバ921〜925)の管理サーバである。クライアント931〜934のうち、クライアント931はノート型パソコン、クライアント932はデスクトップ型パソコン、クライアント933は携帯電話機(スマートフォン、PHS(Personal Handyphone System)でもよい)、クライアント934はタブレット型端末である。図9のサーバ901,902,921〜925によって、図1に示した画像圧縮装置(サーバ)101を実現することができ、図9のクライアント931〜934によって、図1に示したクライアント102を実現することができる。
【0046】
以上説明した実施の形態によれば、デスクトップ画像について、プレ圧縮し、このプレ圧縮のデータを用いて画像圧縮する2段階とし、これら段階をそれぞれ異なるプロセッサを用いて処理するようにした。特に、プレ圧縮は、GPUを用いてデスクトップ画像上の同一色の画素の並びを複数のスレッド(プロセッサ)で同時並行処理して同一色連続長さを検出し、CPUに転送するため、GPUにおけるメモリアクセスを効率的におこなえ、高速に処理できる。また、CPUは、GPUから同一色連続長さの情報を得るため、CPUで同一色連続長さの検出をおこなう必要が無く、得られた同一色連続長さの情報に基づき、デスクトップ画像上での同一色の並び(バックグラウンドおよびバックグラウンド上での矩形画像)を効率的に検出することができる。これにより、デスクトップ画像の圧縮にかかる全体処理をGPUおよびCPUの機能に適した機能分担ができ、これらGPUおよびCPUいずれの負担も軽減でき、圧縮を効率的におこなうことができ、迅速にクライアントに送信できるようになる。
【0047】
また、上記実施の形態では、GPUとCPUを用いて圧縮処理をおこなう構成としたが、マルチコアのCPUを用いて上記GPUの処理内容をおこなうこともでき、この場合においても、圧縮の全体処理を効率的におこなえるようになる。
【0048】
そして、上記の実施の形態によれば、特に、デスクトップ画像として製品設計時におけるCAD画像等、データ量が大きい画像の画像圧縮に対して有効であり、DaaS等のサービス利用時においてサーバは、デスクトップ画像を迅速にクライアントに送信でき、サーバレスポンスを改善でき、クライアントにおける操作性を向上でき、システム全体の利便性を向上できるようになる。
【0049】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0050】
(付記1)圧縮する画像データについて、各画素の色を複数スレッドの同時並行処理によりそれぞれ検出し、1列の画素の並びにおける同一色連続長さを求め、
前記同一色連続長さの情報に基づき、前記画像データを圧縮することを特徴とする画像圧縮方法。
【0051】
(付記2)前記同一色連続長さは、第1のプロセッサにより、前記複数スレッドの同時並行処理によって、前記1列の画素の並びで隣接する画素の同一色ごとの連続数をカウントして得ることを特徴とする付記1に記載の画像圧縮方法。
【0052】
(付記3)前記同一色連続長さは、前記第1のプロセッサを用いたスレッドの同時並行処理により求め、
前記画像データの圧縮は、第2のプロセッサを用いておこなうことを特徴とする付記1または2に記載の画像圧縮方法。
【0053】
(付記4)前記同一色連続長さは、前記第1のプロセッサとしてのGPUを用いて求め、前記画像データの圧縮は、前記第2のプロセッサとしてのCPUを用いておこなうことを特徴とする付記1〜3のいずれか一つに記載の画像圧縮方法。
【0054】
(付記5)圧縮する画像データについて、画面全体を複数のブロックに分割し、前記分割後の小ブロックが有する画素数を前記スレッド数に対応させることにより、前記複数スレッドの同時並行処理をおこない前記同一色連続長さを求めることを特徴とする付記1〜4のいずれか一つに記載の画像圧縮方法。
【0055】
(付記6)前記画像データの圧縮は、前記同一色連続長さの情報に基づき、画面全体で最も出現する色をバックグラウンドとして求めた後、
前記同一色連続長さの情報に基づき、前記バックグラウンド以外の色について、面積最大となる矩形の色と大きさと位置を求めることを特徴とする付記1〜5のいずれか一つに記載の画像圧縮方法。
【0056】
(付記7)前記バックグラウンドが求められた際に当該バックグラウンドの色をエンコードし、
前記面積最大となる矩形が求められた際に当該矩形の色と大きさと位置をエンコードすることを特徴とする付記6に記載の画像圧縮方法。
【0057】
(付記8)圧縮する画像データについて、各画素の色を複数スレッドの同時並行処理によりそれぞれ検出し、1列の画素の並びにおける同一色連続長さを求め、前記同一色連続長さの情報に基づき、前記画像データを圧縮するマルチコアのプロセッサを含むことを特徴とする画像圧縮装置。
【0058】
(付記9)前記プロセッサは、各画素の色が複数スレッドの同時並行処理によりそれぞれ検出された1列の画素の並びを格納するメモリに対するアクセスを連続したアドレスを順次読み取ることにより、前記同一色連続長さをカウントすることを特徴とする付記8に記載の画像圧縮装置。
【0059】
(付記10)前記プロセッサは、
同一色連続長さを求める、スレッドの並列処理可能な第1のプロセッサと、
前記画像データを圧縮する第2のプロセッサとを含むことを特徴とする付記8に記載の画像圧縮装置。
【0060】
(付記11)前記第1のプロセッサは、GPUであり、
前記第2のプロセッサは、CPUであることを特徴とする付記10に記載の画像圧縮装置。
【0061】
(付記12)クライアントから受信した操作コマンドに基づき、圧縮する画像データについて、各画素の色を複数スレッドの同時並行処理によりそれぞれ検出し、1列の画素の並びにおける同一色連続長さを求め、前記同一色連続長さの情報に基づき、前記画像データを圧縮し、前記クライアントに送信するプロセッサを含むサーバと、
前記サーバに対し前記操作コマンドを送信するごとに、前記操作コマンドに対応した圧縮された画像データを受信し、当該画像データをデコードして画面表示するクライアントと、
を含むことを特徴とするシステム。
【0062】
(付記13)前記画像データは、クライアントが表示するデスクトップ画像であることを特徴とする付記12に記載のシステム。
【符号の説明】
【0063】
100 システム
101a GPU
101b,102a CPU
101 画像圧縮装置(サーバ)
102 クライアント
103 キーボード
104 マウス
105 ディスプレイ
110 ネットワーク

【特許請求の範囲】
【請求項1】
圧縮する画像データについて、各画素の色を複数スレッドの同時並行処理によりそれぞれ検出し、1列の画素の並びにおける同一色連続長さを求め、
前記同一色連続長さの情報に基づき、前記画像データを圧縮することを特徴とする画像圧縮方法。
【請求項2】
前記同一色連続長さは、第1のプロセッサにより、前記複数スレッドの同時並行処理によって、前記1列の画素の並びで隣接する画素の同一色ごとの連続数をカウントして得ることを特徴とする請求項1に記載の画像圧縮方法。
【請求項3】
前記同一色連続長さは、前記第1のプロセッサを用いたスレッドの同時並行処理により求め、
前記画像データの圧縮は、第2のプロセッサを用いておこなうことを特徴とする請求項1または2に記載の画像圧縮方法。
【請求項4】
前記同一色連続長さは、前記第1のプロセッサとしてのGPUを用いて求め、前記画像データの圧縮は、前記第2のプロセッサとしてのCPUを用いておこなうことを特徴とする請求項1〜3のいずれか一つに記載の画像圧縮方法。
【請求項5】
圧縮する画像データについて、画面全体を複数のブロックに分割し、前記分割後の小ブロックが有する画素数を前記スレッド数に対応させることにより、前記複数スレッドの同時並行処理をおこない前記同一色連続長さを求めることを特徴とする請求項1〜4のいずれか一つに記載の画像圧縮方法。
【請求項6】
前記画像データの圧縮は、前記同一色連続長さの情報に基づき、画面全体で最も出現する色をバックグラウンドとして求めた後、
前記同一色連続長さの情報に基づき、前記バックグラウンド以外の色について、面積最大となる矩形の色と大きさと位置を求めることを特徴とする請求項1〜5のいずれか一つに記載の画像圧縮方法。
【請求項7】
前記バックグラウンドが求められた際に当該バックグラウンドの色をエンコードし、
前記面積最大となる矩形が求められた際に当該矩形の色と大きさと位置をエンコードすることを特徴とする請求項6に記載の画像圧縮方法。
【請求項8】
圧縮する画像データについて、各画素の色を複数スレッドの同時並行処理によりそれぞれ検出し、1列の画素の並びにおける同一色連続長さを求め、前記同一色連続長さの情報に基づき、前記画像データを圧縮するマルチコアのプロセッサを含むことを特徴とする画像圧縮装置。
【請求項9】
前記プロセッサは、各画素の色が複数スレッドの同時並行処理によりそれぞれ検出された1列の画素の並びを格納するメモリに対するアクセスを連続したアドレスを順次読み取ることにより、前記同一色連続長さをカウントすることを特徴とする請求項8に記載の画像圧縮装置。
【請求項10】
前記プロセッサは、
同一色連続長さを求める、スレッドの並列処理可能な第1のプロセッサと、
前記画像データを圧縮する第2のプロセッサとを含むことを特徴とする請求項8に記載の画像圧縮装置。
【請求項11】
前記第1のプロセッサは、GPUであり、
前記第2のプロセッサは、CPUであることを特徴とする請求項10に記載の画像圧縮装置。
【請求項12】
クライアントから受信した操作コマンドに基づき、圧縮する画像データについて、各画素の色を複数スレッドの同時並行処理によりそれぞれ検出し、1列の画素の並びにおける同一色連続長さを求め、前記同一色連続長さの情報に基づき、前記画像データを圧縮し、前記クライアントに送信するプロセッサを含むサーバと、
前記サーバに対し前記操作コマンドを送信するごとに、前記操作コマンドに対応した圧縮した画像データを受信し、当該画像データをデコードして画面表示するクライアントと、
を含むことを特徴とするシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2013−62690(P2013−62690A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2011−199995(P2011−199995)
【出願日】平成23年9月13日(2011.9.13)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】