(57)【特許請求の範囲】
【請求項１】
プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、を有する体積算出装置であって、
前記プロセッサは、
体積の算出対象物を複数包含する領域の画像データに対し第１の線分の入力を受け付ける入力処理と、
前記入力処理によって入力された第１の線分のうち、前記領域の外周と交差する２点間を結ぶ第２の線分を抽出する抽出処理と、
前記領域の起伏を示す標高データに基づいて、前記抽出処理によって抽出された第２の線分の位置における標高データが前記複数の算出対象物を示す標高データのいずれに該当するか否かを判定する判定処理と、
前記判定処理によっていずれの算出対象物を示す標高データにも該当しないと判定された場合、前記第２の線分に基づいて前記領域を分割することにより、分割領域を生成する生成処理と、
前記領域の起伏を示す標高データのうち、前記生成処理によって生成された分割領域の起伏を示す標高データを用いて、前記分割領域に含まれる前記算出対象物の体積を算出する算出処理と、
を実行することを特徴とする体積算出装置。
【請求項２】
前記判定処理では、前記プロセッサは、さらに、前記領域の起伏を示す標高データのうち、前記第２の線分の位置における標高データの勾配に基づいて、前記第２の線分の位置における標高データが前記領域内に存在する非算出対象物を示す標高データに該当するか否かを判定し、
前記生成処理では、前記プロセッサは、前記判定処理によって前記いずれの算出対象物を示す標高データにも該当せず、かつ、前記非算出対象物を示す標高データに該当しないと判定された場合、前記第２の線分に基づいて前記領域を分割することにより、前記分割領域を生成することを特徴とする請求項１に記載の体積算出装置。
【請求項３】
前記判定処理では、前記プロセッサは、前記第２の線分の位置における標高データの勾配が、前記算出対象物の安息角に基づくしきい値以上であるか否かを判定することを特徴とする請求項２に記載の体積算出装置。
【請求項４】
前記算出処理では、前記プロセッサは、前記分割領域の起伏を示す標高データのうち最低標高に基づいて、前記分割領域に含まれる前記算出対象物の体積を算出することを特徴とする請求項１に記載の体積算出装置。
【請求項５】
記憶デバイスに記憶されたプログラムを実行するプロセッサが、
体積の算出対象物を複数包含する領域の画像データに対し第１の線分の入力を受け付ける入力処理と、
前記入力処理によって入力された第１の線分のうち、前記領域の外周と交差する２点間を結ぶ第２の線分を抽出する抽出処理と、
前記領域の起伏を示す標高データに基づいて、前記抽出処理によって抽出された第２の線分の位置における標高データが前記複数の算出対象物を示す標高データのいずれに該当するか否かを判定する判定処理と、
前記判定処理によっていずれの算出対象物を示す標高データにも該当しないと判定された場合、前記第２の線分に基づいて前記領域を分割することにより、分割領域を生成する生成処理と、
前記領域の起伏を示す標高データのうち、前記生成処理によって生成された分割領域の起伏を示す標高データを用いて、前記分割領域に含まれる前記算出対象物の体積を算出する算出処理と、
を実行することを特徴とする体積算出方法。
【請求項６】
前記判定処理では、前記プロセッサは、さらに、前記領域の起伏を示す標高データのうち、前記第２の線分の位置における標高データの勾配に基づいて、前記第２の線分の位置における標高データが前記領域内に存在する非算出対象物を示す標高データに該当するか否かを判定し、
前記生成処理では、前記プロセッサは、前記判定処理によって前記いずれの算出対象物を示す標高データにも該当せず、かつ、前記非算出対象物を示す標高データに該当しないと判定された場合、前記第２の線分に基づいて前記領域を分割することにより、前記分割領域を生成することを特徴とする請求項５に記載の体積算出方法。
【請求項７】
前記判定処理では、前記プロセッサは、前記第２の線分の位置における標高データの勾配が、前記算出対象物の安息角に基づくしきい値以上であるか否かを判定することを特徴とする請求項６に記載の体積算出方法。
【請求項８】
前記算出処理では、前記プロセッサは、前記分割領域の起伏を示す標高データのうち最低標高に基づいて、前記分割領域に含まれる前記算出対象物の体積を算出することを特徴とする請求項５に記載の体積算出方法。
【請求項９】
記憶デバイスに記憶されたプログラムを実行するプロセッサに、
体積の算出対象物を複数包含する領域の画像データに対し第１の線分の入力を受け付ける入力処理と、
前記入力処理によって入力された第１の線分のうち、前記領域の外周と交差する２点間を結ぶ第２の線分を抽出する抽出処理と、
前記領域の起伏を示す標高データに基づいて、前記抽出処理によって抽出された第２の線分の位置における標高データが前記複数の算出対象物を示す標高データのいずれに該当するか否かを判定する判定処理と、
前記判定処理によっていずれの算出対象物を示す標高データにも該当しないと判定された場合、前記第２の線分に基づいて前記領域を分割することにより、分割領域を生成する生成処理と、
前記領域の起伏を示す標高データのうち、前記生成処理によって生成された分割領域の起伏を示す標高データを用いて、前記分割領域に含まれる前記算出対象物の体積を算出する算出処理と、
を実行させることを特徴とする体積算出プログラム。
【請求項１０】
前記判定処理では、前記プロセッサに、さらに、前記領域の起伏を示す標高データのうち、前記第２の線分の位置における標高データの勾配に基づいて、前記第２の線分の位置における標高データが前記領域内に存在する非算出対象物を示す標高データに該当するか否かを判定させ、
前記生成処理では、前記プロセッサは、前記判定処理によって前記いずれの算出対象物を示す標高データにも該当せず、かつ、前記非算出対象物を示す標高データに該当しないと判定された場合、前記第２の線分に基づいて前記領域を分割することにより、前記分割領域を生成させることを特徴とする請求項９に記載の体積算出プログラム。
【請求項１１】
前記判定処理では、前記プロセッサに、前記第２の線分の位置における標高データの勾配が、前記算出対象物の安息角に基づくしきい値以上であるか否かを判定させることを特徴とする請求項１０に記載の体積算出プログラム。
【請求項１２】
前記算出処理では、前記プロセッサに、前記分割領域の起伏を示す標高データのうち最低標高に基づいて、前記分割領域に含まれる前記算出対象物の体積を算出させることを特徴とする請求項９に記載の体積算出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、体積を算出する体積算出装置、体積算出方法、および体積算出プログラムに関する。
【背景技術】
【０００２】
撮影位置と撮影方向が既知の画像を２枚以上組み合わせ、ステレオ視により、画像間で重なって撮影された対象の奥行きや起伏を求められることは一般的に知られている。ステレオ視の応用として、航空写真や衛星画像からＤＳＭ（Ｄｉｇｉｔａｌ  Ｓｕｒｆａｃｅ  Ｍｏｄｅｌ）と呼ばれる地表の起伏や各地点の標高が求められる。得られたＤＳＭは３次元データであるため、３次元コンピュータグラフィックスやＧＩＳ（Ｇｅｏｇｒａｐｈｉｃ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｙｓｔｅｍ）、ＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）といった３次元を必要とする処理に利用される。
【０００３】
災害分野におけるＤＳＭの応用例として特許文献１があり、災害発生後の被害箇所を特定するために、災害発生前後のＤＳＭ上の同一地点の標高差を求める。
【０００４】
ところで、産業分野において製鉄所や石炭火力発電所に山積みで在庫される鉱物があり、管理の観点から体積を把握する必要がある。また、一般的に対象とする鉱物を専用の重機で運搬するため、特定の形状と大きさになる傾向が見受けられる。そのため、その形状の体積を求めるために必要な幅、高さを適用することにより、ある程度の精度ではあるが体積を得られる。しかし、全ての鉱物を重機で移動できないため、一部特定の形状とは異なる形状を取る。その場合、前述の方法で体積を得ることは難しい。特許文献２は、重機の走行位置と腕先端の旋回位置より形状の体積を算出する。
【０００５】
原料山の表面の位置を特定するための装置とブームを利用する技術として、特許文献３および特許文献４がある。３次元スキャナを利用する技術として、特許文献５がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特願２００５−２１４９７１号公報
【特許文献２】特許４５１２０４６号公報
【特許文献３】特開２０１１−１５７１８７号公報
【特許文献４】特開２０１２−１９３０３０号公報
【特許文献５】特開２０１２−０８２０３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した特許文献２では、重機の走行位置と腕先端の旋回位置が得られない場合には、原料山の体積を算出することができないという問題がある。また、特許文献３および特許文献４では、ブームの到達範囲外では、原料山の表面の位置を特定することができないため、ブームの到達範囲外では原料山の体積を求めることができないという問題がある。また、特許文献５では、山高さ情報取得装置によって原料山の高さ、スタッカ―の走行位置、ブームの旋回角度や俯仰角度、原料山固有の安息角など各種情報を取得する必要があり、体積算出に際し、現地での作業工数が多いという問題がある。
【０００８】
本発明は、体積算出の容易化を図ることを目的とする。
【課題を解決するための手段】
【０００９】
本願において開示される発明の一側面となる体積算出装置、体積算出方法、および体積算出プログラムは、体積の算出対象物を複数包含する領域の画像データに対し第１の線分の入力を受け付ける入力処理と、前記入力処理によって入力された第１の線分のうち、前記領域の外周と交差する２点間を結ぶ第２の線分を抽出する抽出処理と、前記領域の起伏を示す標高データに基づいて、前記抽出処理によって抽出された第２の線分の位置における標高データが前記複数の算出対象物を示す標高データのいずれに該当するか否かを判定する判定処理と、前記判定処理によっていずれの算出対象物を示す標高データにも該当しないと判定された場合、前記第２の線分に基づいて前記領域を分割することにより、分割領域を生成する生成処理と、前記領域の起伏を示す標高データのうち、前記生成処理によって生成された分割領域の起伏を示す標高データを用いて、前記分割領域に含まれる前記算出対象物の体積を算出する算出処理と、を実行することを特徴とする。
【発明の効果】
【００１０】
本発明の代表的な実施の形態によれば、体積算出の容易化を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】貯蔵ヤードの一例を示す説明図である。
【図２】オルソ処理データに含まれるＤＳＭを視覚化したデータ例を示す説明図である。
【図３】ＤＳＭのデータ構造例を示す説明図である。
【図４】貯蔵ヤードの空撮画像から得られたＤＳＭの一例を示す説明図である。
【図５】オルソ画像を視覚化したデータ例を示す説明図である。
【図６】オルソ画像のデータ構造例を示す説明図である。
【図７】アウトラインＤＢの記憶内容例を示す説明図である。
【図８】体積算出装置のハードウェア構成例を示すブロック図である。
【図９】体積算出装置の機能的構成例を示すブロック図である。
【図１０】一時スキャンラインが入力されたときのオルソ画像の例１を示す説明図である。
【図１１】スキャンライン確定時のオルソ画像の例１を示す説明図である。
【図１２】判定部による判定処理内容の例１を示す説明図である。
【図１３】スキャンラインＤＢの記憶内容例を示す説明図である。
【図１４】一時スキャンラインが入力されたときのオルソ画像の例２を示す説明図である。
【図１５】判定部による判定処理内容の例２を示す説明図である。
【図１６】一時スキャンラインが入力されたときのオルソ画像の例３を示す説明図である。
【図１７】判定部による判定処理内容の例３を示す説明図である。
【図１８】セグメントの一例を示す説明図である。
【図１９】セグメントＤＢの記憶内容例を示す説明図である。
【図２０】体積算出装置による体積算出処理手順例を示すフローチャートである。
【図２１】図２０に示したスキャンライン確定処理（ステップＳ２００１）の詳細な処理手順例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
本実施例では、石炭や石灰石、鉱物などの原料が積まれた山（以下、原料山）の体積を算出する例について説明するが、算出対象は、原料山にかぎらず、スクラップやゴミなどの廃棄物、土などが積まれた山でもよい。
【００１３】
＜貯蔵ヤードの一例＞
図１は、貯蔵ヤードの一例を示す説明図である。（Ａ）は、貯蔵ヤード１００の平面図であり、（Ｂ）は側面図である。貯蔵ヤード１００には複数のレールＲ（図１では例として４本）が配備されており、レールＲ間に原料山Ｍが載置される。レールＲ上には、スタッカやリクレーマなどのヤード設備Ｅが配備され、レールＲ上を移動可能である。スタッカは、原料を貯蔵ヤード１００に連続的に積み付けるために用いられる荷役機械である。スタッカはブームＢを有し、旋回可能である。また、ブームＢは俯仰可能である。原料はブームＢを介して原料ヤードに積み付けられて、原料山を形成する。
【００１４】
リクレーマは、貯蔵ヤード１００に積み付けられた原料山から原料を連続的に払い出し次工程に送り出すための機械である。リクレーマはブームＢを有し、旋回可能である。また、ブームＢは俯仰可能である。原料はブームＢを介して原料ヤードから払い出される。また、各レールＲの両側には、フェンスＦが配置されている。フェンスＦは、原料がレールＲに流れ込むのを防止する。
【００１５】
＜オルソ処理データの一例＞
オルソ処理データは、オルソ画像とＤＳＭとを含むデータである。オルソ画像は、貯蔵ヤード１００の空撮画像を地図と重なるように幾可補正した画像である。ＤＳＭは、オルソ画像上の各座標に対応する標高データである。貯蔵ヤード１００の空撮画像は、航空機、人口衛星、ラジコンなどの移動体から撮影された画像である。空撮画像と、空撮画像の撮影時のカメラの位置情報であるＧＰＳログと、撮影時のカメラの撮影角度ログと、を撮影データと称す。撮影データは、オルソ処理端末に入力される。オルソ処理端末は、オルソ補正およびＤＳＭ生成処理を実行し、オルソ処理データを生成する。
【００１６】
図２は、オルソ処理データに含まれるＤＳＭを視覚化したデータ例を示す説明図である。図２では、説明の簡略化のために、ＤＳＭのデータ構造を便宜的に画像と同様に扱う。なお、以降の図において、図１の符号と区別するため、データの場合は、図１に示したアルファベット大文字の符号をアルファベット小文字の符号で表現する。たとえば、図１の原料山Ｍの画像データは、原料山ｍとする。
【００１７】
ＤＳＭは原点Ｏｄｓｍとするｘｄｓｍ，ｙｄｓｍ画像座標系と原点Ｏｍａｐとするｘｍａｐ，ｙｍａｐ地図座標系を持ち、画像座標系と地図座標系はアフィン変換を利用して相互に対応付けられる。アフィン変換の係数は画像フォーマットに埋め込むことができる。例えば、ＴＩＦＦ（Ｔａｇｇｅｄ  Ｉｍａｇｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ）の拡張フォーマットであるＧｅｏＴＩＦＦが該当する。各ピクセルには、標高値が格納される。標高値は、海面をゼロとしてもよいし、基準となる標高をオフセットとした値でもよい。図２では、標高値は濃淡で示される。色が濃いほど標高が低いことを示す。
【００１８】
図３は、ＤＳＭのデータ構造例を示す説明図である。ＤＳＭは、ピクセルに格納された標高値が連続的に羅列したデータ列である。標高３０２の各値は、（ピクセル幅×ｙｄｓｍ）＋ｘｄｓｍで示すインデックス３０１と対応付けられる。なお、インデックス３０１は便宜上の表現であり、データとしては格納されない。また、標高値が無い部分には、相当の値が定義される。たとえば、便宜上、「−１００００」のような実際にはありえない値とする。地図座標系と画像座標系の関係を表すアフィン変換の係数のうちスケール係数に注目することにより、１ピクセル辺りの実際の面積を算出することができる。
【００１９】
図４は、貯蔵ヤード１００の空撮画像から得られたＤＳＭの一例を示す説明図である。なお、点線の矩形は、アウトラインＯＬ１〜ＯＬ３（以下、総称してＯＬ）である。アウトラインＯＬは、原料山ｍが形成される領域を表し、１個以上の図形（多角形でも円でもよい）で構成される。アウトラインＯＬは地図座標系で表現される。ＤＳＭとアウトラインＯＬは、地図座標系で重畳される。
【００２０】
図５は、オルソ画像を視覚化したデータ例を示す説明図である。オルソ画像５００は原点Ｏｏｒｔｈｏとするｘｏｒｔｈｏ，ｙｏｒｔｈｏ画像座標系と原点Ｏｍａｐとするｘｍａｐ，ｙｍａｐ地図座標系を持ち、画像座標系と地図座標系はアフィン変換を利用して相互に対応付けられる。ＤＳＭと同様にアフィン変換の係数は画像フォーマットに埋め込むことができる。地図座標系はＤＳＭとオルソ画像５００とで共通であり、同一地点の値を参照することができる。
【００２１】
図６は、オルソ画像５００のデータ構造例を示す説明図である。ピクセルに格納されたＲｅｄ、Ｇｒｅｅｎ、Ｂｌｕｅの値が連続に羅列したデータ列である。Ｒｅｄフィールド６０２、Ｇｒｅｅｎフィールド６０３、Ｂｌｕｅフィールド６０４の各値は、（ピクセル幅×ｙｏｒｔｈｏ）＋ｘｏｒｔｈｏで示すインデックス６０１と対応付けられる。なお、インデックス６０１は便宜上の表現であり、データとしては格納されない。地図座標系と画像座標系の関係を表すアフィン変換の係数のうちスケール係数に注目することにより、１ピクセル辺りの実際の面積を算出することができる。
【００２２】
図７は、アウトラインＤＢの記憶内容例を示す説明図である。アウトラインＤＢ７００には、アウトラインＯＬが格納される。アウトラインＯＬとは、原料山ｍが形成される領域であり、あらかじめユーザの操作入力により設定される。アウトラインＯＬは、アウトラインＩＤフィールド７０１とジオメトリフィールド７０２とにより特定される。アウトラインＩＤフィールド７０１は、アウトラインＩＤを格納する領域である。アウトラインＩＤは、アウトラインＯＬを一意に特定する識別情報である。ジオメトリフィールド７０２は、ジオメトリを格納する領域である。ジオメトリは、アウトラインの図形情報である。ジオメトリは、図形を表現できるフォーマットであれば何でも構わないが、図７では、一例として、ＷＫＴ（Ｗｅｌｌ  Ｋｎｏｗｎ  Ｔｅｘｔ）形式により多角形で表現される。
【００２３】
＜ハードウェア構成例＞
図８は、体積算出装置のハードウェア構成例を示すブロック図である。体積算出装置８００は、プロセッサ８０１と、記憶デバイス８０２と、入力デバイス８０３と、出力デバイス８０４と、通信インターフェース（通信ＩＦ８０５）と、を有する。プロセッサ８０１、記憶デバイス８０２、入力デバイス８０３、出力デバイス８０４、および通信ＩＦ８０５は、バスにより接続される。プロセッサ８０１は、体積算出装置８００を制御する。記憶デバイス８０２は、プロセッサ８０１の作業エリアとなる。また、記憶デバイス８０２は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス８０２としては、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュメモリがある。入力デバイス８０３は、データを入力する。入力デバイス８０３としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス８０４は、データを出力する。出力デバイス８０４としては、たとえば、ディスプレイ、プリンタがある。通信ＩＦ８０５は、ネットワークと接続し、データを送受信する。
【００２４】
＜機能的構成例＞
図９は、体積算出装置８００の機能的構成例を示すブロック図である。体積算出装置８００は、記憶部９０１と、座標変換部９０２と、編集部９０３と、体積算出部９０４と、を有する。記憶部９０１は、具体的には、たとえば、図８に示した記憶デバイス８０２によりその機能を実現する。編集部９０３と座標変換部９０２と体積算出部９０４は、具体的には、たとえば、図８に示した記憶デバイス８０２に記憶されたプログラムをプロセッサ８０１に実行させることによりその機能を実現する。
【００２５】
体積算出装置８００は、オルソ処理端末８５０に接続される。オルソ処理端末８５０は、撮影データ（貯蔵ヤード１００の空撮画像８６１、空撮画像８６１の撮影時のカメラの位置情報であるＧＰＳログ８６２、撮影時のカメラの撮影角度ログ８６３）８６０を取り込む。オルソ処理端末８５０は、撮影データを用いてオルソ補正およびＤＳＭ生成処理を実行することにより、オルソ処理データ（オルソ画像５００とＤＳＭ）を生成する。オルソ処理端末８５０は、生成されたオルソ処理データを体積算出装置８００に送信する。体積算出装置８００は、オルソ処理端末８５０からのオルソ処理データを入力して、記憶部９０１に格納する。
【００２６】
記憶部９０１は、オルソ処理データのほか、アウトラインＤＢ７００と、スキャンラインＤＢ９１１と、セグメントＤＢ９１２とを記憶する。スキャンラインＤＢ９１１は、スキャンラインを格納するデータベースである。スキャンラインは、アウトラインとともに体積算出の単位となるセグメントを規定する線分である。セグメントＤＢ９１２は、セグメントを記憶するデータベースである。セグメントは、アウトラインとスキャンラインとにより規定される体積算出の単位となる領域である。
【００２７】
オルソ画像５００、アウトラインＯＬ、およびスキャンライン（後述する一時スキャンラインも含む）は、地図座標系で表現される。地図座標系に変換可能な情報は、一般的なＧＩＳパッケージを利用する場合には、画面上のディスプレイ座標系に変換され、さらに、一般的な縮尺変更表示操作、並行移動表示操作が可能である。ディスプレイ座標系と地図座標系は、アフィン係数を利用することで、座標の変換・逆変換が可能である。
【００２８】
座標変換部９０２は、画像座標系、地図座標系、ディスプレイ座標系で表現される情報（オルソ画像５００、ＤＳＭ、アウトラインＯＬ、スキャンライン）の変換または逆変換を実行する。たとえば、オルソ画像５００は原点Ｏｏｒｔｈｏとするｘｏｒｔｈｏ，ｙｏｒｔｈｏ画像座標系と原点Ｏｍａｐとするｘｍａｐ，ｙｍａｐ地図座標系を持つため、座標変換部９０２は、画像座標系のオルソ画像５００を地図座標系のオルソ画像５００に変換する。そして、座標変換部９０２は、地図座標系に変換されたオルソ画像５００をディスプレイ座標系のオルソ画像５００に変換する。ディスプレイ座標系に変換されたオルソ画像５００は、表示部９３１により出力デバイスであるディスプレイに表示される。
【００２９】
また、表示部９３１によってディスプレイに表示されたオルソ画像５００を記憶部９０１に保存する場合には、座標変換部９０２は、ディスプレイ座標系のオルソ画像５００を地図座標系のオルソ画像５００に変換する。そして、座標変換部９０２は、地図座標系に変換されたオルソ画像５００を画像座標系のオルソ画像５００に変換して記憶部９０１に保存する。
【００３０】
編集部９０３は、オルソ画像５００を編集する。編集部９０３は、表示部９３１と、入力部９３２と、判定部９３３と、を有する。表示部９３１は、出力デバイス８０４であるディスプレイに、座標変換部９０２によってディスプレイ座標系に変換されたオルソ画像５００を表示する。また、表示部９３１は、アウトラインＤＢ７００からアウトラインＯＬを読み出して、座標変換部９０２によってディスプレイ座標系に変換されたアウトラインＯＬを、オルソ画像５００に重畳表示する。
【００３１】
入力部９３２は、出力デバイス８０４であるディスプレイに表示されたオルソ画像５００上に、スキャンラインを入力する。入力部９３２によって入力され、かつ、未確定状態のスキャンラインを、一時スキャンラインと称す。ユーザは、たとえば、入力デバイス８０３を操作して、一時スキャンラインの始点と終点を入力する。入力デバイス８０３がマウスである場合、マウスの左クリックボタンの押下時の画像座標を始点座標とし、左クリックボタンをリリースした時点の画像座標を終点座標とする。この場合、表示部９３１は、ドラッグ中は一時スキャンラインをラバーバンド表示してもよい。
【００３２】
図１０は、一時スキャンラインが入力されたときのオルソ画像５００の例１を示す説明図である。一時スキャンラインｔＳＣ１は、始点ｐｓと終点ｐｅとを結ぶ矢印の線分である。
【００３３】
図１１は、スキャンライン確定時のオルソ画像５００の例１を示す説明図である。図１０に示した一時スキャンラインｔＳＣ１の始点ｐｓとアウトラインＯＬ１の外周である辺との交点が、スキャンラインＳＣ１の始点Ｐｓとなり、一時スキャンラインｔＳＣ１の終点ｐｅとアウトラインＯＬ１の外周である辺との交点が、スキャンラインＳＣ１の終点Ｐｅとなる。なお、一時スキャンラインｔＳＣ１が複数のアウトラインＯＬの外周と交差する場合には、同一のアウトラインＯＬにおける外周との２つの交点が、スキャンラインｔＳＣ１の始点Ｐｓと終点Ｐｅになる。同一のアウトラインＯＬにおける外周との２つの交点が複数組ある場合には、一時スキャンラインｔＳＣ１の始点ｐｓ（終点ｐｅでもよい）に最も近い組のアウトラインＯＬが採用される。
【００３４】
図９に戻り、判定部９３３は、ＤＳＭを用いて、オルソ画像５００上のスキャンラインの妥当性を判定する。具体的には、たとえば、判定部９３３は、スキャンラインが原料山間の谷に引かれているか否かを判定する。
【００３５】
図１２は、判定部９３３による判定処理内容の例１を示す説明図である。図１２では、図１０に示した一時スキャンラインｔＳＣ１が入力されて、図１１に示したスキャンラインＳＣ１が確定した場合を例に挙げる。
【００３６】
図１２の（Ａ）のグラフ（図１５の（Ａ）、図１７の（Ａ）も同様）において、横軸は、一時スキャンラインｔＳＣ１上における貯蔵ヤード１００の位置を示し、縦軸は標高を示す。点線波形Ｗ１ａは、ＤＳＭから得られた一時スキャンラインｔＳＣ１を引いた位置の標高である。Ｔ１はしきい値であり、原料山ｍ間の谷を規定する上限標高である。Ｈ１は、点線波形Ｗ１ａの最大標高と最小標高との標高差（最大標高差）である。すなわち、点線波形Ｗ１ａにおける最大標高差Ｈ１がＴ１よりも低い場合には、判定部９３３は、点線波形Ｗ１ａで示すスキャンラインＳＣ１は原料山ｍ間の谷に引かれたと判定する。（Ａ）のグラフでは、Ｈ１＜Ｔ１であるため、スキャンラインＳＣ１は妥当であると判定される。
【００３７】
（Ｂ）のグラフ（図１５の（Ｂ）、図１７の（Ｂ）も同様）において、横軸は、一時スキャンラインｔＳＣ１上における貯蔵ヤード１００の位置を示し、縦軸は勾配を示す。点線波形Ｗ１ｂは、ＤＳＭから得られた一時スキャンラインｔＳＣ１を引いた位置における隣接ピクセル間の標高差の絶対値の波形である。ｈ１は、点線波形Ｗ１ｂにおける最大値の絶対値である。Ｔ２はしきい値である。ヤード設備ｅや建物などの物体は、標高が高いほど勾配が急峻となる。なお、フェンスｆの高さはヤード設備ｅや建物に比べて低く、勾配も小さい。また、原料山ｍは、固有の安息角で堆積されるため、ヤード設備や建物などの物体に比べて、勾配は小さい。したがって、しきい値Ｔ２は、ヤード設備ｅや建物などの物体と、フェンスｆや原料山ｍとを区別するためのしきい値であり、原料山ｍの安息角に基づく原料山ｍの斜面の勾配よりも高い値となる。
【００３８】
すなわち、点線波形Ｗ１ｂにおける最大値ｈ１がＴ２よりも低い場合には、判定部９３３は、点線波形Ｗ１ｂで示すスキャンラインＳＣ１はヤード設備ｅや建物などの物体と重複していないと判定する。重複とは、スキャンライン上の位置における標高データが、ヤード設備ｅや建物などの物体を示す標高データに該当することである。（Ｂ）のグラフでは、ｈ１＜Ｔ２であるため、スキャンラインＳＣ１は妥当であると判定される。
【００３９】
判定部９３３は、図１２の例では、（Ａ）および（Ｂ）のグラフのいずれにおいても妥当であると判定されたスキャンラインＳＣ１をスキャンラインＤＢ９１１に格納する。なお、判定部９３３は、（Ａ）および（Ｂ）のグラフのいずれかにおいて妥当でないと判定された場合は、スキャンラインＳＣ１をスキャンラインＤＢ９１１に格納しない。
【００４０】
図１３は、スキャンラインＤＢ９１１の記憶内容例を示す説明図である。スキャンラインＤＢ９１１は、スキャンラインＩＤフィールド１３０１と、アウトラインＩＤフィールド１３０２と、平均標高フィールド１３０３と、ジオメトリフィールド１３０４と、を有し、エントリごとにスキャンラインを特定する。スキャンラインＩＤフィールド１３０１は、スキャンラインＩＤを格納する領域である。スキャンラインＩＤは、スキャンラインを一意に特定する識別情報である。アウトラインＩＤフィールド１３０２は、アウトラインＩＤを格納する領域である。アウトラインＩＤは、スキャンラインＩＤにより特定されるスキャンラインの端点（始点Ｐｓ，終点Ｐｅ）が位置するアウトラインＯＬを一意に特定する識別情報である。
【００４１】
平均標高フィールド１３０３は、平均標高を格納する領域である。平均標高は、スキャンラインＩＤにより特定されるスキャンラインＳＣの標高（たとえば、図１２の点線波形Ｗ１ａ）の平均値である。ジオメトリフィールド１３０４は、ジオメトリを格納する領域である。ジオメトリは、スキャンラインを示す図形情報であり、図形を表現できるフォーマットであればよい。図１３ではＷＫＴ形式でスキャンラインの線分（始点座標値と終点座標値）でスキャンラインが表現される。
【００４２】
図１４は、一時スキャンラインが入力されたときのオルソ画像５００の例２を示す説明図である。一時スキャンラインｔＳＣ２は、原料山ｍと交差するように入力されている。
【００４３】
図１５は、判定部９３３による判定処理内容の例２を示す説明図である。図１５では、図１４に示した一時スキャンラインｔＳＣ２が入力されてスキャンラインＳＣ２が確定した場合を例に挙げる。
【００４４】
図１５の（Ａ）のグラフにおいて、点線波形Ｗ２ａは、ＤＳＭから得られた一時スキャンラインｔＳＣ２を引いた位置の標高である。Ｈ２は、点線波形Ｗ２ａの最大標高と最小標高との標高差（最大標高差）である。すなわち、点線波形Ｗ２ａにおける最大標高差Ｈ２がＴ１よりも低い場合には、判定部９３３は、点線波形Ｗ２ａで示すスキャンラインは原料山ｍ間の谷に引かれたと判定する。（Ａ）のグラフでは、Ｈ２＜Ｔ１でないため、スキャンラインＳＣ２は妥当でないと判定される。
【００４５】
（Ｂ）のグラフにおいて、点線波形Ｗ２ｂは、ＤＳＭから得られた一時スキャンラインを引いた位置における隣接ピクセル間の標高差の絶対値の波形である。ｈ２は、点線波形Ｗ２ｂにおける最大値である。すなわち、点線波形Ｗ２ｂにおける最大値ｈ２がＴ２よりも低い場合には、判定部９３３は、点線波形Ｗ２ｂで示すスキャンラインＳＣ２はヤード設備ｅや建物などの物体と重複していないと判定する。（Ｂ）のグラフでは、ｈ２＜Ｔ２であるため、スキャンラインＳＣ２は妥当であると判定される。
【００４６】
判定部９３３は、図１５の（Ａ）において妥当でないと判定するため、スキャンラインＳＣ２をスキャンラインＤＢ９１１に格納しない。なお、判定部９３３は、図１５の（Ａ）において妥当でないと判定された場合、（Ｂ）の判定処理を実行しなくてもよい。
【００４７】
図１６は、一時スキャンラインが入力されたときのオルソ画像５００の例３を示す説明図である。一時スキャンラインｔＳＣ３は、ヤード設備ｅと交差するように入力されている。
【００４８】
図１７は、判定部９３３による判定処理内容の例３を示す説明図である。図１７では、図１６に示した一時スキャンラインｔＳＣ３が入力されてスキャンラインＳＣ３が確定した場合を例に挙げる。
【００４９】
図１７の（Ａ）のグラフにおいて、点線波形Ｗ３ａは、ＤＳＭから得られた一時スキャンラインｔＳＣ３を引いた位置の標高である。Ｈ３は、点線波形Ｗ３ａの最大標高と最小標高との標高差（最大標高差）である。すなわち、点線波形Ｗ３ａにおける最大標高差Ｈ３がＴ１よりも低い場合には、判定部９３３は、点線波形Ｗ３ａで示すスキャンラインＳＣ３は原料山間の谷に引かれたと判定する。（Ａ）のグラフでは、Ｈ３＜Ｔ１であるため、スキャンラインＳＣ３は妥当であると判定される。
【００５０】
（Ｂ）のグラフにおいて、点線波形Ｗ３ｂは、ＤＳＭから得られた一時スキャンラインｔＳＣ３を引いた位置における隣接ピクセル間の標高差の絶対値の波形である。ｈ３は、点線波形Ｗ３ｂにおける最大値である。すなわち、点線波形Ｗ３ｂにおける最大値ｈ３がＴ２よりも低い場合には、判定部９３３は、点線波形Ｗ３ｂで示すスキャンラインＳＣ３はヤード設備ｅや建物などの物体と重複していないと判定する。（Ｂ）のグラフでは、ｈ３＜Ｔ２でないため、スキャンラインＳＣ３は妥当でないと判定される。
【００５１】
なお、図１２、図１５、および図１７の判定処理において、（Ａ），（Ｂ）のいずれかで妥当でないと判定された場合、判定部９３３は、警告表示情報を画面に出力する。画面に警告表示情報を出力した場合でも、ユーザが操作入力によりスキャンラインを確定させた場合には、スキャンラインＤＢ９１１に格納される。
【００５２】
図９に戻り、体積算出部９０４は、生成部９４１と算出部９４２とを有する。生成部９４１は、セグメントを生成する。具体的には、たとえば、スキャンラインが確定したオルソ画像５００からセグメントを特定し、特定したセグメントをセグメントＤＢ９１２に格納する。
【００５３】
図１８は、セグメントの一例を示す説明図である。図１８では、セグメントＳＧは矩形であり、対向する２辺がスキャンラインＳＣまたはアウトラインＯＬの辺となる。セグメントＳＧ内には原料山ｍが含まれる。生成部９４１は、セグメントＳＧを構成するスキャンラインＳＣとアウトラインＯＬの辺を特定して、セグメントＤＢ９１２に格納する。
【００５４】
図１９は、セグメントＤＢ９１２の記憶内容例を示す説明図である。セグメントＤＢ９１２は、セグメントＩＤフィールド１９０１と、第１スキャンラインＩＤフィールド１９０２と、第２スキャンラインＩＤフィールド１９０３と、基底標高フィールド１９０４と、体積フィールド１９０５と、ジオメトリフィールド１９０６と、アウトラインＩＤフィールド１９０７と、を有し、エントリごとにセグメントＳＧを特定する。
【００５５】
セグメントＩＤフィールド１９０１は、セグメントＩＤを格納する領域である。セグメントＩＤは、セグメントＳＧを一意に特定する識別情報である。第１スキャンラインＩＤフィールド１９０２は、第１スキャンラインＩＤを格納する領域である。第１スキャンラインＩＤは、セグメントＳＧを構成する２本のスキャンラインＳＣのうち一方のスキャンラインＳＣを一意に特定する識別情報である。第２スキャンラインＩＤフィールド１９０３は、第２スキャンラインＩＤを格納する領域である。第２スキャンラインＩＤは、セグメントＳＧを構成する２本のスキャンラインＳＣのうち他方のスキャンラインＳＣを一意に特定する識別情報である。第１スキャンラインＩＤおよび第２スキャンラインＩＤをキーにすることで、スキャンラインＤＢ９１１からスキャンラインＳＣが特定可能である。
【００５６】
基底標高フィールド１９０４は、基底標高を格納する領域である。基底標高は、セグメントＩＤにより特定されるセグメントＳＧ内における最も低い標高である。生成部９４１が、ＤＳＭを参照してセグメントＳＧ内の各点の標高を特定し、その中の最低標高を基底標高に格納する。
【００５７】
体積フィールド１９０５は、体積を格納する領域である。体積は、セグメントＳＧ内の原料山ｍの体積である。体積の値は、算出部９４２により算出される。ジオメトリフィールド１９０６は、ジオメトリを格納する領域である。ジオメトリは、セグメントＳＧの図形情報であり、図形を表現できるフォーマットであれば何でも構わないが、図１９ではＷＫＴ形式で多角形が表現される。アウトラインＩＤは、セグメントＳＧを構成するアウトラインＯＬを一意に特定する識別情報である。
【００５８】
図９に戻り、算出部９４２は、セグメントＳＧごとに、セグメントＳＧ内における各ピクセルの標高と基底標高との差の総和を算出する。そして、算出部９４２は、算出した総和にピクセル当り面積を乗算することで各セグメントＳＧの体積を算出し、セグメントＤＢ９１２の体積フィールド１９０５に格納する。なお、ピクセル当り面積は、ＤＳＭと地図座標系とを関係付けるアフィン係数のスケール要素を参照することで得られる。
【００５９】
＜体積算出処理手順例＞
図２０は、体積算出装置８００による体積算出処理手順例を示すフローチャートである。体積算出装置８００は、まず、スキャンライン確定処理を実行する（ステップＳ２００１）。スキャンライン確定処理（ステップＳ２００１）は、ユーザからの一時スキャンラインの入力により、セグメントＳＧの生成に必要なスキャンラインＳＣを確定させる処理である。スキャンライン確定処理（ステップＳ２００１）の詳細については後述する。
【００６０】
つぎに、体積算出装置８００は、生成部９４１により、アウトラインＯＬを全スキャンラインＳＣで分割してセグメントＳＧを生成し、生成したセグメントＳＧのセグメントＩＤを採番し、セグメントＤＢ９１２にエントリを生成する。そして、体積算出装置８００は、生成部９４１により、生成したエントリのジオメトリフィールドに、セグメントＳＧの頂点座標値をＷＫＴ形式で格納し、アウトラインＩＤフィールドに、セグメントＳＧを構成するアウトラインＩＤを格納する（ステップＳ２００２）。
【００６１】
つぎに、体積算出装置８００は、生成部９４１により、アウトラインＩＤフィールド１９０７に格納されたアウトラインＩＤで特定されるアウトラインＯＬに接するスキャンラインＳＣのスキャンラインＩＤをスキャンラインＤＢ９１１から特定し、特定した２個のスキャンラインＩＤを、第１スキャンラインＩＤフィールド１９０２および第２スキャンラインＩＤフィールド１９０３に格納する（ステップＳ２００３）。
【００６２】
つぎに、体積算出装置８００は、算出部９４２により、セグメントＤＢ９１２のエントリごとに、第１スキャンラインＩＤのスキャンラインＳＣの最低標高ｈｍｉｎ１をＤＳＭを参照して求め、同様に、第２スキャンラインＩＤのスキャンラインＳＣの最低標高ｈｍｉｎ２をＤＳＭを参照して求める。そして、体積算出装置８００は、算出部９４２により、求めた最低標高ｈｍｉｎ１、ｈｍｉｎ２を用いて基底標高を算出し、基底標高フィールド１９０４に格納する（ステップＳ２００４）。基底標高は、たとえば、平均標高ｈｍｉｎ１、ｈｍｉｎ２の平均値とする。
【００６３】
このあと、体積算出装置８００は、算出部９４２により、セグメントＤＢ９１２のエントリごとに、セグメントＳＧ内の各ピクセルの標高値をＤＳＭから特定する。そして、体積算出装置８００は、算出部９４２により、各ピクセルの標高値から基底標高を引いた値の総和を求め、当該総和にピクセル当たり面積を乗じることでセグメントＳＧの体積を算出する。体積算出装置８００は、算出部９４２により、算出したセグメントＳＧの体積をセグメントＤＢ９１２の体積フィールド１９０５に格納する（ステップＳ２００５）。これにより、体積算出処理手順を終了する。
【００６４】
図２１は、図２０に示したスキャンライン確定処理（ステップＳ２００１）の詳細な処理手順例を示すフローチャートである。まず、体積算出装置８００は、表示部９３１により、初期データを取得する（ステップＳ２１０１）。具体的には、体積算出装置８００は、表示部９３１により、オルソ画像５００、アウトラインＯＬ、およびスキャンラインＳＣを取得する。つぎに、体積算出装置８００は、表示部９３１により、取得した初期データを画面上に重畳表示する（ステップＳ２１０１）。
【００６５】
そして、体積算出装置８００は、入力部９３２から一時スキャンラインの入力を待ち受ける（ステップＳ２１０３：Ｎｏ）。一時スキャンラインの入力があった場合（ステップＳ２１０３：Ｙｅｓ）、体積算出装置８００は、入力部９３２により、一時スキャンラインからスキャンラインを抽出する（ステップＳ２１０４）。そして、体積算出装置８００は、判定部９３３により、スキャンライン上の最大標高差Ｈを算出する（ステップＳ２１０５）。
【００６６】
そして、体積算出装置８００は、判定部９３３により、Ｈ＜Ｔ１であるか否かを判定する（ステップＳ２１０６）。Ｈ＜Ｔ１でない場合（ステップＳ２１０６：Ｎｏ）、最大標高差Ｈはしきい値Ｔ１以上であるため、スキャンラインＳＣは原料山ｍに重畳していることになる。この場合、体積算出装置８００は、画面上の警告表示をして（ステップＳ２１０９）、ステップＳ２１１０に移行する。
【００６７】
一方、Ｈ＜Ｔ１である場合（ステップＳ２１０６：Ｙｅｓ）、体積算出装置８００は、スキャンラインＳＣ上の隣接ピクセルの標高差の絶対値の最大値ｈを算出する（ステップＳ２１０７）。
【００６８】
そして、体積算出装置８００は、判定部９３３により、ｈ＜Ｔ２であるか否かを判定する（ステップＳ２１０８）。ｈ＜Ｔ２でない場合（ステップＳ２１０８：Ｎｏ）、最大値ｈはしきい値Ｔ２以上であるため、スキャンラインＳＣは、ヤード設備ｅなどの物体に重畳していることになる。この場合、体積算出装置８００は、画面上の警告表示をして（ステップＳ２１０９）、ステップＳ２１１０に移行する。
【００６９】
一方、ｈ＜Ｔ２である場合（ステップＳ２１０８：Ｙｅｓ）、体積算出装置８００は、ステップＳ２１０４で生成されたスキャンラインが確定されたか否かを判断する（ステップＳ２１１０）。具体的には、たとえば、体積算出装置８００は、ユーザからの確定入力を待ち受ける。確定されなかった場合（ステップＳ２１１０：Ｎｏ）、たとえば、スキャンライン生成し直しの入力があった場合には、ステップＳ２１０３に戻る。
【００７０】
一方、確定された場合（ステップＳ２１１０：Ｙｅｓ）、体積算出装置８００は、判定部９３３により、スキャンラインＤＢ９１１にスキャンラインＳＣを格納する（ステップＳ２１１１）。そして、体積算出装置８００は、終了入力を待ち受け（ステップＳ２１１２）、終了しない場合（ステップＳ２１１２：Ｎｏ）、たとえば、スキャンラインＳＣの生成の継続入力があった場合には、ステップＳ２１０３に戻る。一方、終了入力があった場合（ステップＳ２１１２：Ｙｅｓ）、スキャンライン確定処理（ステップＳ２００１）を終了し、ステップＳ２００２に移行する。
【００７１】
このように、本実施例によれば、ユーザ操作により入力された一時スキャンラインからスキャンラインを抽出するため、ユーザは、アウトラインの端辺上の位置を指定しなくても、アウトラインを分割するためのスキャンラインを生成することができる。したがって、体積を算出する個々の原料山を含むセグメントを容易に生成することができる。
【００７２】
また、ＤＳＭからスキャンライン上の起伏の最大勾配を、隣接しあうピクセルの標高差の絶対値の最大値により求めることにより、スキャンラインがヤード設備ｅなどの非算出対象物と重複していることを検出することができる。非算出対象物は、原料山ｍの体積算出のノイズとなるため、スキャンラインが非算出対象物と重複した場合には警告表示をするなどして、一時スキャンラインの再入力をユーザに促すことができる。
【００７３】
また、しきい値Ｔ２は、原料山ｍが持つ固有の安息角から得られる原料山の勾配を基準にして設定することにより、原料山ｍとヤード設備ｅなどの非算出対象物とを区別して判定することができる。
【００７４】
また、フェンスｆなど原料山ｍではないが体積算出に影響がでない物体については、勾配を基準にして判定することで非算出対象物に該当しないことになるため、スキャンラインがフェンスｆにまたがっていてもセグメントＳＧ内の原料山ｍの体積を算出することができる。このように、本実施例によれば、体積算出の容易化を図ることができる。
【００７５】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【００７６】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【００７７】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【００７８】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【００７９】
５００  オルソ画像
８００  体積算出装置
９０１  記憶部
９０２  座標変換部
９０３  編集部
９０４  体積算出部
９３１  表示部
９３２  入力部
９３３  判定部
９４１  生成部
９４２  算出部
【図１】
0006293593.tif 000002
【図２】
0006293593.tif 000003
【図３】
0006293593.tif 000004
【図４】
0006293593.tif 000005
【図５】
0006293593.tif 000006
【図６】
0006293593.tif 000007
【図７】
0006293593.tif 000008
【図８】
0006293593.tif 000009
【図９】
0006293593.tif 000010
【図１０】
0006293593.tif 000011
【図１１】
0006293593.tif 000012
【図１２】
0006293593.tif 000013
【図１３】
0006293593.tif 000014
【図１４】
0006293593.tif 000015
【図１５】
0006293593.tif 000016
【図１６】
0006293593.tif 000017
【図１７】
0006293593.tif 000018
【図１８】
0006293593.tif 000019
【図１９】
0006293593.tif 000020
【図２０】
0006293593.tif 000021
【図２１】
0006293593.tif 000022