我一直打我的头,对这一段时间没有用。

我有一堆图像的地质样本的,这是名义上1500px宽30,000px长。一个典型的设置这些图像的数将从20至100。我已经使用了DeepZoomTools.dll 创建一个收集这些图像和我在尝试使用,奠定了图像。

所有的图像最初载有视区。原籍国的0和一个视区。宽度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;

现在有素的"全尺寸"的图像,每米(深度单位的米)我确定是什么深度范围实际上,我想显示器(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倍什么他们应该(即一个"显示的深度范围"的10显示实际的深度范围的3m)

我显然有一些位的逻辑是错误的,在我的计算,但在经过它我只是没有看到它。

我设置的ViewportWidth在整个多尺度图像作为反对设置这只是subimages,但这似乎是很好只要我不想要调整的视区宽度相对于另一个。

我已经检查的深度值进行解析,并通过在它们是正确的。

有帮助吗?

解决方案

该DeepZoom的东西,尤其是视窗总是让我的头受到伤害时,我与它的工作。我不确定我可以回答你的问题比其他来点你的方向什么样的帮助我得到它。

其他资源,我找到了最近,我认为是很容易的工作用于深深的焦工具本身是 Eventr.这一工具使创建和显示深深的焦收藏更加容易。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top