标签: stride

为什么BitmapSource.Create会抛出ArgumentException?

我试图通过使用Image和BitmapSource从WPF中显示原始数据创建的位图:

Int32[] data = new Int32[RenderHeight * RenderWidth];

for (Int32 i = 0; i < RenderHeight; i++)
{
    for (Int32 j = 0; j < RenderWidth; j++)
    {
        Int32 index = j + (i * RenderHeight);

        if (i + j % 2 == 0)
            data[index] = 0xFF0000;
        else
            data[index] = 0x00FF00;
    }
}

BitmapSource source = BitmapSource.Create(RenderWidth, RenderHeight, 96.0, 96.0, PixelFormats.Bgr32, null, data, 0);

RenderImage.Source = source;
Run Code Online (Sandbox Code Playgroud)

但是,对BitmapSource.Create的调用会抛出ArgumentException,并说"值不在预期范围内".这不是这样做的方法吗?我没有正确地打电话吗?

c# bitmapsource stride

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

在Keras中定义(2,2)的步幅 - 第二个值是多少?

我对keras中的一个步幅(比如说,2,2)的想法感到有些困惑.

元组(2,2)中的第二个2是做什么的?

我知道步幅是否为(2),因为那时我们将在图像上移动滤镜2个像素.

如果我们沿着y沿着x向前跨步2,那么我们将沿着对角线运行图像.这没有多大意义.

Keras文档不清楚.

谢谢.

filter convolution stride keras

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

pytorch 张量步幅 - 它是如何工作的

PyTorch 似乎没有tensor.stride(). 有人可以确认我的理解吗?

我的问题有三个。

  1. Stride 用于访问存储中的元素。因此步幅大小将与张量的维度相同。正确的?

  2. 对于每个维度,stride 的相应元素表示沿着一维存储移动需要多少距离。正确的?

例如:

In [15]: x = torch.arange(1,25)

In [16]: x
Out[16]:
tensor([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18
, 19, 20, 21, 22, 23, 24])

In [17]: a = x.view(4,3,2)

In [18]: a
Out[18]:
tensor([[[ 1,  2],
         [ 3,  4],
         [ 5,  6]],

        [[ 7,  8],
         [ 9, 10],
         [11, 12]],

        [[13, 14],
         [15, 16],
         [17, 18]],

        [[19, 20], …
Run Code Online (Sandbox Code Playgroud)

numpy stride pytorch tensor

7
推荐指数
0
解决办法
2428
查看次数

Openlayers 3如何以高(小)分辨率渲染几何中的每个点?

如何强制ol3渲染几何体中的每个点?

我遇到了openlayers 3的问题,虽然我在100米的距离上绘制了一个3000点的线串,但只有大约1000个渲染.

编辑:现在 - Openlayers 3 v.3.7.0

在开放层3中的一组点上进行足够远的放大显示,在网格图案中仅绘制了几个点.我想放大查看在厘米或毫米级地图中略微偏移的100个点.

openlayers 3有可能吗?

geojson stride openlayers-3

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

如何从具有负步幅的位图复制像素数据?

我一直在寻找将Bitmap转换为8bpp的最快方法.我发现了两种方法:

1.

        public static System.Drawing.Image ConvertTo8bpp(Bitmap oldbmp)
    {
        using (var ms = new MemoryStream())
        {
            oldbmp.Save(ms, ImageFormat.Gif);
            ms.Position = 0;
            return System.Drawing.Image.FromStream(ms);
        }
    }
Run Code Online (Sandbox Code Playgroud)

2. http://www.wischik.com/lu/programmer/1bpp.html

但是: 1.结果质量非常低(托盘坏)

和2给我一个负步幅的位图,当我尝试锁定位并将数据复制到字节数组时,我得到一个异常:尝试读取或写入受保护的内存.这通常表明其他内存已损坏.

        BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);

        this.stride = bmpData.Stride;
        this.bytesPerPixel = GetBytesPerPixel(bmp.PixelFormat);
        int length = bmpData.Stride * bmp.Height;
        if (this.stride < 0)
            this.data = new byte[-length];
        else
            this.data = new byte[length];
        Marshal.Copy(bmpData.Scan0, data, 0, length);

        //Unlock the bitmap
        bmp.UnlockBits(bmpData);
Run Code Online (Sandbox Code Playgroud)

我怎样才能让2给出积极的进步?或者我如何使用负步幅的锁定位来复制数据?

c# bitmap stride

5
推荐指数
3
解决办法
4716
查看次数

Numpy大步招数抱怨"阵列太大",为什么?

在numpy(1.8)中,我想将这个计算从Python循环中转移到更多numpy-ish以获得更好的性能:

(width, height) = base.shape
(toolw, toolh) = tool.shape
for i in range(0, width-toolw):
    for j in range(0, height-toolh):
        zdiff[i,j] = (tool - base[i:i+toolw, j:j+toolh]).min()
Run Code Online (Sandbox Code Playgroud)

base是一个~2000x2000阵列,tool是一个25x25阵列.(背景背景:基础和工具是高度图,我试图找出最接近基础的工具移动方法.)

我试图使用一个跨越式的技巧,从这开始:

base_view = np.lib.stride_tricks.as_strided(base, shape=(2000, 2000, 25, 25), 
                                            strides=(base.strides * 2))
Run Code Online (Sandbox Code Playgroud)

这将base_view[10,20]是从(10,20)的左上角的基数开始的25x25值的数组.

然而,这与"阵列太大"失败了.从价值测试来看,当数组的潜在大小(例如2000*2000*25*25*8)超过2 ^ 32-ish并且触发溢出检查时,它会报告此问题,从而将所有维度相乘.(我使用的是32位Python安装).

我觉得我错过了一些东西 - 为什么当步幅值明显起作用时,它不会让我创造这种"跨步观点"?有没有办法强迫这个?

更一般地说,有没有办法优化我的循环?

更新:确切错误:

ValueError                                Traceback (most recent call last)
<ipython-input-14-313b3d6c74fa> in <module>()
----> 1 newa = np.lib.stride_tricks.as_strided(base, shape=(1000, 1000, 25, 25), strides=(base.strides * 2))

C:\Python27\lib\site-packages\numpy\lib\stride_tricks.pyc in as_strided(x, shape, strides)
     28     if strides …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy stride

5
推荐指数
1
解决办法
785
查看次数

numpy stride_tricks.as_strided vs列表理解滚动窗口

在处理滚动窗口时,我以列表理解的方式编写了函数

[np.std(x[i:i+framesize]) for i in range(0, len(x)-framesize, hopsize)])]
Run Code Online (Sandbox Code Playgroud)

最近,我发现numpy.lib.stride_tricks.as_strided并发现它被广泛用于滚动窗口(例如,这篇文章),即使它是“隐藏”功能。

在有关为何未记录stride_tricks.as_strided的问题中,提到了

故意地!这很危险!帮助实现broadcast_arrays()只是底层管道。

stride_tricks.as_strided列表理解或for循环有什么优势吗?我看了的源代码,stride_tricks但收获甚微。

python arrays numpy stride

5
推荐指数
1
解决办法
2261
查看次数

按模式查找布尔掩码

我有阵列:

arr = np.array([1,2,3,2,3,4,3,2,1,2,3,1,2,3,2,2,3,4,2,1])
print (arr)
[1 2 3 2 3 4 3 2 1 2 3 1 2 3 2 2 3 4 2 1]
Run Code Online (Sandbox Code Playgroud)

我想找到这个模式并返回booelan mask:

pat = [1,2,3]
N = len(pat)
Run Code Online (Sandbox Code Playgroud)

我用strides:

#https://stackoverflow.com/q/7100242/2901002
def rolling_window(a, window):
    shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
    strides = a.strides + (a.strides[-1],)
    c = np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)
    return c
print (rolling_window(arr, N))
[[1 2 3]
 [2 3 2]
 [3 2 3]
 [2 3 4]
 [3 4 …
Run Code Online (Sandbox Code Playgroud)

python arrays boolean numpy stride

5
推荐指数
1
解决办法
281
查看次数

D动态数组初始化,步幅和索引操作

对不起,这成了关于阵列的3个问题

我认为(动态)数组在D中真正强大,但以下一直困扰我一段时间:

在C++中,我可以轻松地分配具有指定值的数组,但在DI中没有找到一种方法.当然以下是没有问题的:

int[] a = new int[N];
a[] = a0;
Run Code Online (Sandbox Code Playgroud)

但它看起来效率低下,因为第一行将初始化0,并且像2一样a0.可以在D中完成类似以下的操作吗?

int[] a = new int(a0)[N]; // illegal
Run Code Online (Sandbox Code Playgroud)

在std.range中使用stride时我遇到的另一个效率问题:

import std.stdio;
import std.range;

struct S
{
    int x;

    this(this)
    {
        writeln("copy ", x);
    }
}

void f(S[] s)
{
}

int main()
{
    S[] s = new S[10];
    foreach (i, ref v; s)
    {
        v.x = i;
    }

    f(stride(s, 3)); // error
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当然我天真地想,我可以简单地使用步幅创建一个新的数组而不复制它的元素?在D中没有办法这样做,对吧?


所以我去模拟,好像数组一样大步返回,并实现f为:

f(s, 3);

void f(S[] s, uint …
Run Code Online (Sandbox Code Playgroud)

arrays d dynamic stride

4
推荐指数
1
解决办法
705
查看次数

MPI - 发送数组的段

所以我有一系列双打.我想每隔5小时发送一次接收过程.基本上,我需要一种在它们之间发送特定双打的方法.除了将双打存储到发送缓冲区之外,还有一个功能吗?制作我自己的派生类型会更好吗?

arrays mpi send stride

4
推荐指数
1
解决办法
4211
查看次数

标签 统计

stride ×10

arrays ×5

numpy ×4

python ×3

c# ×2

bitmap ×1

bitmapsource ×1

boolean ×1

convolution ×1

d ×1

dynamic ×1

filter ×1

geojson ×1

keras ×1

mpi ×1

openlayers-3 ×1

pytorch ×1

send ×1

tensor ×1