问题标签 [raster-graphics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
606 浏览

algorithm - 游程编码数字形状的轮廓

数字形状是二进制图像(斑点)中的一组连接像素。

它可以通过游程编码紧凑地表示,即将像素分组为水平线段并存储起始端点坐标和长度。通常,RLC 表示以光栅顺序存储游程,即逐行并向右移动。

对于平滑的形状,存储需求从 O(N²) 下降到 O(N)。

形状的轮廓是一个封闭的像素链,当其内部被填充(通过填充算法)时,它会恢复形状。它也是一个 O(N) 表示。文中的形状可以作为位图使用,轮廓可以通过轮廓算法获得。

我正在寻找一种算法,它可以直接计算给定 RLC 表示的形状的轮廓,而不是在中间位图中绘制它。该算法预计在运行次数上线性运行。

在此处输入图像描述

你遇到过解决方案吗?

0 投票
1 回答
239 浏览

algorithm - 我可以使用什么算法来区分封闭和开放的栅格多边形?

想象一下我有两个点数组。其中之一是一个开放的多边形,看起来像这样。

图 1

Xes 是黑点和点 ('.') - 白色点。

第二个点数组包含一个封闭的多边形:

图 2

我需要一个算法的名称,它允许我确定给定的点数组是封闭多边形还是开放多边形。我需要这些信息来确定我是否可以填充它(我不能填充第一个示例,但我可以填充第二个示例)。

算法叫什么,它可以让我区分这两种类型的多边形?

更新 1(10.10.2015 10:05 MSK):我需要区分封闭多边形和开放多边形以防止洪水填充错误。

洪水填充错误,是当我将洪水填充应用于开放多边形时

最后得到一个完全填充的网格:

我最初的想法是

  1. 取多边形,
  2. 检查它是打开还是关闭
  3. 如果它已关闭,请应用洪水填充。

现在,我可以做不同的事情:

  1. 洪水填充多边形。
  2. 如果整个网格被填充,那么它是一个开放的,否则(在填充后网格中至少有一个点是白色的),它是一个封闭的。

如果有办法避免进行填充以确定多边形是打开还是关闭,请告诉我。

0 投票
0 回答
570 浏览

graphics - 栅格化 3D 线

我正在尝试找到一种用于 3D 线段光栅化的算法。Bresenham 的算法似乎几乎是我想要的,但它不计算任何 Z 值。

有谁知道是否有办法扩展 Bresenham 的算法或不同的算法?

0 投票
1 回答
1530 浏览

image - 如何解释 1 bpp BMP 文件中的像素阵列

在以下情况下,我找不到解释像素阵列的方法:我在 Windows 7 上使用 MS Paint 创建了一个 2x2 像素的 BMP 图像。将其保存为单色 BMP(我认为这意味着 BMP,颜色深度为每像素 1 位)

这是图像在缩放时的样子(黑色像素、白色像素、白色像素、黑色像素) 在此处输入图像描述

然后我用十六进制编辑器打开 bmp,我可以看到以下信息:

据我在关于 BMP 格式(https://en.wikipedia.org/wiki/BMP_file_format)的维基百科文章中读到,这部分是像素数组:

3f00 0000 4000 0000

像素数组中的值是什么意思?3F值有什么特殊含义吗?

0 投票
1 回答
1637 浏览

javascript - 如何按需在传单上叠加光栅图像?

我正在使用我在用户输入中收到的纬度和经度坐标来使用leaflet.js 可视化地图。当我这样做时,我会在背景中计算一个热图(例如,在所选坐标周围 5 公里宽的区域中的人口密度图)。

如何将热图叠加到我的地图上?

这是我到目前为止得到的:一个用于生成地图的 html 文件,以及一个由我的后台计算创建的 .js 文件,我在其中存储选择的坐标、一些多边形或兴趣,以及我希望存储/指向栅格地图的位置我为那个地区生成。

文件 rois.js 由我的程序在后台生成,包含所选坐标和要在地图上绘制的一些多边形。我想了解如何在此处包含栅格信息。

谢谢 FP

0 投票
1 回答
1959 浏览

r - 在 R 中的 plot rasterVis 包中更改堆叠栅格数据的名称

我有下一个代码:

使用以下方法堆叠我的数据:

层的名称是:

然后,我需要更改图层名称:2000、2001、......、2011、,我正在使用

但我得到 X2000,X2001 ...

但是,如果我使用字符,则输出是正确的:

那么month.abb的类如何是字符,然后我改变

但输出不会改变。

**那么,如何更改图层的名称?**。

PD:我需要更改名称以使用rasterVis包(levelplot 函数)绘制我的数据

0 投票
1 回答
1147 浏览

r - R中rasterVis图中的比例尺和指北针

我在 R 中使用 rasterVis 包来绘制栅格数据(主要是 tif 格式的卫星数据)。如果我能得到一些关于添加比例尺和指北针的建议,我将不胜感激。此软件包中提供的任何内置功能?提前致谢。

0 投票
0 回答
140 浏览

java - Java,栅格和矢量数据的缩放操作

我很乐意向您寻求有关涉及光栅和矢量数据(由线表示)的缩放操作的代码的帮助。对不起,完整的代码稍长:

不幸的是,缩放操作仅适用于栅格数据。矢量线保持其位置和大小。

没有缩放的初始图:

初始图

应用缩放加操作:

放大加

在我看来,以下行可能是不正确的

不涉及累积的移位 x、y 和比例......但是,错误可能在其他地方:-)

另一个问题:有没有更简单的方法在 Java 中实现缩放操作?非常感谢您的帮助...

0 投票
1 回答
773 浏览

opengl - 在 OpenGL 中,视口变化是如何以及何时发生的?(gl视口)

我有一个关于计算机图形管道的问题。

在 OpenGL 中,我们通常在 reshape 回调中使用 glViewport 函数。我听说 glViewport 与视口转换有关。

在我们的顶点着色器中,我们通常计算我们的顶点并使这些顶点定义在裁剪坐标(归一化裁剪立方体)中。

视口转换何时起作用?

我猜如果顶点着色器将顶点信息输出到光栅化器,那么管道会翻译这些顶点信息。

X(v) = (x + 1)/2 * 宽度 + 左 y(v) = (y + 1)/2 * 高度 + 底部。(视口变换)

因此,我认为 glViewport 只是设置了在完成顶点着色器工作后如何进行视口转换。

这样对吗?

0 投票
0 回答
634 浏览

r - 使用 PDF 输出设备时光栅化绘图

大家好,大家都在使用 R,

将具有数千个数据点的多个绘图放入单个 PDF 文件时,该文件可能会变得很大并且需要很长时间才能打开。

以下帖子描述了 Matplotlib 中完全相同的问题,以及一个很好的解决方案: Matplotlib: multipage PDF with rasterized plots 特别好的一点是,它只对点进行光栅化而不对标签进行光栅化。 http://www.astrobetter.com/blog/2014/01/17/slim-down-your-bloated-graphics/包含一个很好的例子。

我现在正在 R 中寻找类似的解决方案。