我希望使用10 X 10滤波器对尺寸为600 X 400的图像执行二维卷积。过滤器不可分离。scipy.signal.convolve2d
目前对我来说效果不错,但我期待不久会有更大的图片。在
对此,我有两个想法
- 调整图像大小
- 二次抽样(或跨步)?在
专注于子采样部分,theano有一个函数,它的卷积方式与scipy卷积2d相同,参见theano conv2d
它也有子采样选项。但是,在windows上安装no让我很痛苦。如何使用scipy.signal.convolve2d
获得子采样工作?还有其他的选择吗(这不需要我安装一些重量级的库)?在
Tags:
你可以手工实现子采样,为了简单起见,我只画1d。假设你想在一个间隔为k的规则子网格上采样s=d*f。那么你的第n个样本是s_nk=sum_i=0^10 f_i d_nk-i。这里要观察的是f和d的指数总和总是k的倍数。这意味着把它分成子和s_nk=sum_j=0^k-1 sum_i=0^10/k f_j+ik d_j+(n-i)k。所以你需要做的是:子样本d在所有偏移量为0,…,k-1处的间距为k的网格处。将所有结果对的偏移量和子采样数相加。在
下面是一些1d的代码,它大致实现了上面的功能,只是网格的位置稍有不同,以便于索引管理。第二个函数用愚蠢的方法来做,即先计算完整的卷积,然后再进行除法运算。它是用来测试第一个函数的。在
编辑:2d版本:
^{pr2}$相关问题 更多 >
编程相关推荐