标签: rasterizing

在R中将Shapefile转换为光栅?

我有一个从worldwildlife.org下载的shapefile,用于世界地球生态区.该文件可以在这里加载:http://worldwildlife.org/publications/terrestrial-ecoregions-of-the-world.

它是一个标准的形状文件,我想用它做两件事.首先:从我的本地目录中获取shapefile并将其剪辑到北美东部(ext = extent(-95,-50,24,63))

# Read shapefile using package "maptools"
eco_shp <- readShapeLines("F:/01_2013/Ecoregions/Global/wwf_terr_ecos.shp", 
                          proj4string=CRS("+proj=utm +zone=33 +datum=WGS84")) 


# Set the desired extent for the final raster using package "raster" 
ext <- extent(-95, -50, 24, 63)
Run Code Online (Sandbox Code Playgroud)

我确信我必须在"raster"包中使用rasterize功能,但我仍然无法使其正常工作.我很感激有关如何做到这一点的任何建议.

r raster data-conversion shapefile rasterizing

8
推荐指数
1
解决办法
9672
查看次数

用CUDA绘制三角形

我正在编写自己的图形库(是的,它的作业:)并使用cuda快速完成所有渲染和计算.

我有绘制填充三角形的问题.我这样编写了一个进程绘制一个三角形.当场景中有很多小三角形时它工作得很好,但是当三角形很大时它会完全破坏性能.

我的想法是做两次通过.首先计算仅包含扫描线信息的选项卡(从此处绘制到此处).这将是每个过程计算的三角形,就像当前算法一样.在第二遍中,确实绘制了每个三角形有多个进程的扫描线.

但它会足够快吗?也许有更好的解决方案?

algorithm parallel-processing cuda rasterizing

7
推荐指数
1
解决办法
3779
查看次数

光栅矢量图像的通用算法

光栅化矢量图像的一般算法是什么?我发现了许多光栅化基元的算法,如直线,圆,贝塞尔曲线等.但一般情况下,我该怎么办?简单地说,在矢量图片中找到矢量图,得到它的像素并将它们放入光栅图像中?或者是其他东西?

另一个问题是,如何使用并发性来改善处理时间?例如,我可以分离矢量图并同时获取它们的像素.但也许有其他方法可以做到这一点?

vector-graphics rasterizing raster-graphics

7
推荐指数
1
解决办法
4722
查看次数

透视正确的纹理映射; z距离计算可能是错误的

我正在制作一个软件光栅化器,我遇到了一些障碍:我似乎无法使透视校正纹理映射工作.

我的算法是首先对坐标进行排序y.这将返回最高,最低和中心点.然后我使用三角洲走过扫描线:

// ordering by y is put here

order[0] = &a_Triangle.p[v_order[0]];
order[1] = &a_Triangle.p[v_order[1]];
order[2] = &a_Triangle.p[v_order[2]];

float height1, height2, height3;

height1 = (float)((int)(order[2]->y + 1) - (int)(order[0]->y));
height2 = (float)((int)(order[1]->y + 1) - (int)(order[0]->y));
height3 = (float)((int)(order[2]->y + 1) - (int)(order[1]->y));

// x 

float x_start, x_end;
float x[3];
float x_delta[3];

x_delta[0] = (order[2]->x - order[0]->x) / height1;
x_delta[1] = (order[1]->x - order[0]->x) / height2;
x_delta[2] = (order[2]->x - order[1]->x) / height3;

x[0] = order[0]->x;
x[1] = …
Run Code Online (Sandbox Code Playgroud)

c++ zbuffer rasterizing

6
推荐指数
1
解决办法
4554
查看次数

Qt圆角矩形,为什么角落不同?

我尝试drawRoundedRect直接用方法绘制一个圆形矩形QPixmap(没有渲染引擎涉及这里exept纯Qt一个...),我仔细检查矩形的大小与我的pixmap的大小:

Pixmap : QSize(50, 73) 
Rectangle: QRect(0,0 48x11) 
Run Code Online (Sandbox Code Playgroud)

看到充足的空间......

编辑:一些代码

pixmap = QPixmap(50,73); //example size that match my case
QRectF rect(0,0,48,11);

QPainter painter(&pixmap);
painter.setRenderHint(QPainter::TextAntialiasing);
painter.setWorldMatrixEnabled(false);
painter.setPen(QPen()); //no pen
painter.setBrush(QBrush(color));
painter.drawRoundedRect(rect, 2.0, 2.0);
Run Code Online (Sandbox Code Playgroud)
  • 我禁用了世界转型......
  • 我将集合转换为统一...
  • 我尝试了几个半径(1.0,2.0,3.0,4.0)......
  • 我换笔宽,刷颜色......

但它始终以4个不同角落的直线结束!像那样 :

x和y的半径= 3.0

我直接将pixmap输出到一个文件,以确保我在显示期间没有刮它...相同的形状.

有人知道Qt圆形矩形半径小吗?我很久以前就看到过这个问题,但我并不清楚如何处理它!

c++ qt qt4 rasterizing

6
推荐指数
2
解决办法
9281
查看次数

C++三角栅格化

我正在尝试修复此三角形光栅化器,但无法使其正常工作.出于某种原因,它只绘制了一半的三角形.

void DrawTriangle(Point2D p0, Point2D p1, Point2D p2)
{
    Point2D Top, Middle, Bottom;
    bool MiddleIsLeft;

    if (p0.y < p1.y)                    // case: 1, 2, 5
    {
        if (p0.y < p2.y)                // case: 1, 2
        {
            if (p1.y < p2.y)            // case: 1
            {
                Top = p0;
                Middle = p1;
                Bottom = p2;
                MiddleIsLeft = true;
            }
            else                        // case: 2
            {
                Top = p0;
                Middle = p2;
                Bottom = p1;
                MiddleIsLeft = false;
            }
        }
        else                            // case: 5
        {
            Top …
Run Code Online (Sandbox Code Playgroud)

c++ graphics rasterizing

6
推荐指数
1
解决办法
1万
查看次数

如何在半整数像素中心栅格化OpenGL三角形

OpenGL像素/片段在概念上是以半整数像素为中心的1x1个正方形.OpenGL 4.5规范声明:

片段位于其左下角,位于整数网格坐标上.光栅化操作也指一个片段的中心,它从左下角偏移(1/2,1/2)(因此位于半整数坐标上).

光栅化器通常假设像素中心位于整数网格上.由于我试图实现正确的OpenGL三角形填充,我想知道以下程序是否合理.

让我们看一个带有剪裁坐标(-1,-1),(+ 1,-1),(0,+ 1)的三角形的简单情况,如下图所示(假设正投影,z = 0) ).假设我们有一个(小的5x5帧缓冲区),我们将三角形映射到via,glViewport(0,0,5,5)如右图所示,在设备坐标中产生三角形,顶点为(0,0),(5,0),(2.5,5).

像素以半整数为中心

如您所见,光栅化器应生成三角形内部的13个片段(图像中的阴影像素).请注意,片段中心位于半整数坐标上.要实现OpenGL规范,这就是结果需要的结果.

扫描线多边形填充将确定扫描线与三角形相交的x跨距,但扫描线为半整数y值,如下图所示:

三角形填充OpenGL

硬件/固件光栅化器将假设像素中心位于整数网格上,因为这是执行填充的最有效方式.在下图中,我将三角形的设备坐标移动了(-0.5,-0.5),将中心放在整数网格上:

在此输入图像描述

请注意,像素中心现在确实在整数网格上.在传递给片段着色器之前,这个光栅化器只会向每个片段中心添加(0.5,0.5).至少这是我的计划.

处理纹理坐标似乎是直截了当的.想象一下,我分配了纹理坐标(0,0),(1,0),(0.5,1),如下所示.左边的图像使用半整数像素中心(OpenGL方式),右边的图像使用整数像素中心(硬件方式).纹理坐标(任何附加的片段属性)最终都有相同的值 - 即,没有什么特别需要做的.

在此输入图像描述

我的方法看起来是否正确?

  • 将(-0.5,-0.5)添加到每个片段坐标,
  • 使用硬件高效填充,
  • 生成片段中心时,重新添加(0.5,0.5),和
  • 不要冒汗其他片段属性(他们只是锻炼).

opengl pixel rasterizing rasterize

6
推荐指数
0
解决办法
1718
查看次数

有没有办法将grob直接保存到rasterGrob?

我正在绘制几个ggplot2对象并将它们置于grid.arrange内部调用'pdf'设备.我发现如果我首先光栅化这些图表,PDF的性能会提高十亿倍(生成速度更快,渲染速度更快).所以在一个并行dlply循环中,我正在使用ggsave将其ggplot2作为PNG 编写,然后使用readPNG它来重新读取并rasterGrob转换为返回它dlply.在dlply将其放入一个列表grobs,其grid.arrange然后绘制到PDF设备.

其中一些似乎不实用,所以一般来说,有更好的方法吗?但真正让我感到困惑的是将PNG写入磁盘,而我所做的就是将它们读回来.有没有办法将grob直接保存到rasterGrob?

plot.list <- dlply( ... {
        ggsave(filename= fname
               ,plot= my.plot
               ,device= "png" 
               ,scale = 1, width= 1.1, height= 2.125, units = "in" 
               ,dpi = dpi)

        # return it as a list of rasters
        rasterGrob(readPNG( source= fname, info= TRUE))
}
Run Code Online (Sandbox Code Playgroud)

pdf r rasterizing ggplot2 grob

6
推荐指数
1
解决办法
168
查看次数

在 Haskell 中光栅化 TrueType 字体

我想构建一个函数,该函数采用给定的 Unicode 字符和给定的 TrueType 字体,并将相应的字形光栅化为二维 1 位/像素位图。

类似的东西:

rasterize :: Font -> Char -> Size -> Bitmap
rasterize font char size = ...
Run Code Online (Sandbox Code Playgroud)

要求

rasterize功能应该:

  • 产生最大宽度w和高度的位图h,使得w <= sizeh <= size
  • 光栅化字形,使其完全填充位图,不留任何填充。

Bitmap类型应支持以下操作(或类似操作):

width  :: Bitmap -> Int
height :: Bitmap -> Int
bit    :: Bitmap -> (Int, Int) -> Bool
Run Code Online (Sandbox Code Playgroud)

wherebit b (x, y)应该评估True是否(且仅当)b索引位置的Bitmap中的位(x, y)被设置。

是否有任何 Haskell 库已经可以做到这一点,或类似的东西?

例子

评估表达式 …

rendering haskell bitmap truetype rasterizing

5
推荐指数
0
解决办法
464
查看次数

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

使用 R 的大家好,

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

下面的文章描述了 Matplotlib 中完全相同的问题,以及一个很好的解决方案: Matplotlib:带有光栅化图的多页 PDF 特别好的一点是,它只光栅化点而不光栅化标签。 http://www.astrobetter.com/blog/2014/01/17/slim-down-your-bloated-graphics/包含一个很好的例子。

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

graphics plot r rasterizing raster-graphics

5
推荐指数
0
解决办法
969
查看次数