1

私はしばらくの間、これに対して頭を悩ませてきましたが、役に立ちませんでした。

名目上幅 1500 ピクセル、長さ 30,000 ピクセルの地質サンプルの画像がたくさんあります。これらの画像の典型的なセットは、20 ~ 100 の番号になります。DeepZoomTools.dll を使用してこれらの画像のコレクションを作成し、それを使用して画像をレイアウトしようとしています。

すべての画像は、最初に ViewPort.Origin 0 および ViewPort.Width 1 (基本的にデフォルト) でロードされます。MultiScaleImage.ImageOpenSucceeded イベントの後にそれらを繰り返し処理し、いくつかの追加のメタデータに基づいてそれらを配置しようとしています。

各画像には深度 (メートル単位の深度) が関連付けられており、その深度に基づいて各画像をスタックしたいと考えています。(画像間にギャップが生じる場合があるため、上部の深度値に基づいて各画像を特定する必要があります)。(別の説明についてはコメントを参照してください)。

一連の画像を読み込んだ後、次のように画像自体のメートルあたりのピクセル数を見つけます: (必ずしも連続しているとは限らないため、すべてを合計する必要があります)

double sumImagePixelHeights = (from s in _imageData.Values select s.Height).Sum();
double sumImageDepthRanges = (from s in _imageData.Values select (s.BottomDepth - s.TopDepth)).Sum();
_actualPixelsPerMeter = sumImagePixelHeights / sumImageDepthRanges;

ここで、1 メートルあたりの「フル サイズ」画像のピクセル (深さはメートル単位) を使用して、実際に表示する深さの範囲を決定します (y 軸は深さでスケーリングされます)。

double desiredVisiblePixels = (_MaxVisibleY - _MinVisibleY)*_actualPixelsPerMeter;
mainImage.ViewportWidth = desiredVisiblePixels / mainImage.ActualHeight;

これにより、縦横比のロックにより表示される X 範囲がスケーリングされ、深度範囲に必要な「元の画像ピクセル」の数が表示されるように、ビューポートの幅が設定されます。

次に、mainImage.SubImages コレクション内の画像を反復処理して、目的の深度に基づいて原点を設定します。

for (int index = 0; index < mainImage.SubImages.Count; index++)
    {
      MultiScaleSubImage si = mainImage.SubImages[index];
      ImageMetadata im = _imageData[index];
      double xpnt = _actualPixelsPerMeter *im.TopDepth / (im.Width);
      si.ViewportOrigin = new Point(0, -xpnt);  
    }

問題は次
のとおりです。ViewportWidth の計算が正しくありません。画像が本来の 3 倍にスケーリングされています (つまり、10m の「表示される深度範囲」は、3m の実際の深度範囲を表示します)。

私は明らかに私の計算でいくつかの論理が間違っていますが、それを調べた後、私はそれを見ていません.

サブイメージだけに設定するのではなく、マルチスケール イメージ全体に ViewportWidth を設定していますが、ビューポートの幅を互いに相対的に調整したくない限り、それで問題ないようです。

解析されて渡された深度値を確認しましたが、それらは正しいです。

4

1 に答える 1

0

DeepZoom の機能、特にビューポートを使用すると、常に頭が痛くなります。私があなたの質問に答えることができるかどうかはわかりませんが、私がそれを得るのに役立った方向にあなたを向ける以外に.

私が最近見つけた他のリソースの 1 つは、ディープ ズーム ツール自体よりもはるかに簡単に操作できると思うのはEventrです。このツールを使用すると、ディープ ズーム コレクションの作成と表示がはるかに簡単になります。

于 2009-12-14T16:45:17.867 に答える