Tag: 卷积

带有内核的二维卷积,该内核不是中心发起的

我想用高斯核进行图像的2D卷积,高斯核不是由等式给出的中心起源: h(x-x’,y-y’)= exp( – ((x-x’)^ 2 +(y-y’))/ 2 * sigma) 可以说内核的中心是(1,1)而不是(0,0)。 我应该如何更改以下代码以生成内核和卷积? int krowhalf=krow/2, kcolhalf=kcol/2; int sigma=1 // sum is for normalization float sum = 0.0; // generate kernel for (int x = -krowhalf; x <= krowhalf; x++) { for(int y = -kcolhalf; y <= kcolhalf; y++) { r = sqrtl((x-1)*(x-1) + (y-1)*(y-1)); gKernel[x + […]

通过C或Python移动平均3个元素

我想计算3个元素的移动平均值。 例如,我有25个销售数据元素。 我需要计算从平均这25个数据元素中获取的移动平均值。 当一个真实数组作为数据给出时,我想编写一个程序来确定3个元素的移动平均值并创建一个数组。 数组中的元素数量比给定的序列短2个元素。 例如,如果给我: [7.0, 9.0, 5.0, 1.0, 3.0] 我想得到: [7.0, 5.0, 3.0]

在CUDA中并行化for循环(1D Naive Convolution)

有人可以帮我转换嵌套的for循环到CUDA内核吗? 这是我试图转换为CUDA内核的函数: // Convolution on Host void conv(int* A, int* B, int* out) { for (int i = 0; i < N; ++i) for (int j = 0; j < N; ++j) out[i + j] += A[i] * B[j]; } 我已经非常努力地并行化这段代码。 这是我的尝试: __global__ void conv_Kernel(int* A, int* B, int* out) { int i = blockIdx.x; […]

在C中使用openCV的2D卷积

我想实现一个使用openCV执行2D卷积的程序。 我是openCV的新手。 我天真的实现在这里: #include #include //used for kernel unsigned short int kernel[3][3] __attribute__(( aligned(32))); // input and output image unsigned short int input[512][512] __attribute__(( aligned(32))); unsigned short int output[512][512] __attribute__((aligned(32))); int main() { //data are assigned to input and kernel matrices before. const CvArr* src = input; CvArr* dst = output; const CvMat* kernel = […]

这个程序有什么错误?

这是我的代码,用于查找两个信号的卷积,但每次有人解释我的代码中的错误,我的输出变为零? 我尝试编译它,但我无法找到问题,我的整个代码是正确的,提前感谢 #include #include #define array_len(x) (sizeof(x)/sizeof(double)) void convolution(double *signal, int nt, double *wind, int r, double *rm) { int i,j; printf(“%u\n”, sizeof(wind)); int l = (nt+r-1); for(i=r;i<=l;i++) { wind[i]=0; } for(i=nt;i<=l;i++) { signal[i]=0; } printf("signal\n"); for(i=0; i<=l; i++) { printf("%lf\n",signal[i]); } for(i=0;i<=l;i++) { rm[i]=0; for(j=0;j<=i;j++) { rm[i] = (rm[i]+(signal[j]*wind[ij]) ); } } } void […]

ANSI C代码中的1d线性卷积?

我想知道是否有人可以将我推荐给ANSI C中的一维线性卷积代码片段而不是重新发明轮子? 我在谷歌搜索和堆栈溢出,但在CI中找不到任何东西可以使用。 例如,对于数组A,B和C,所有双精度,其中A和B是输入,C是输出,长度分别为len_A , len_B和len_C = len_A + len_B – 1 。 我的arrays尺寸很小,因此不需要通过FFT实现快速卷积的任何速度增加。 寻找简单的计算。