Perform conv2 on a batch of images

I have a set of 2D images for which I would like to convolve each image separately with a kernel. This is particularly important for GPU acceleration because doing the convolution one at a time with a for loop is much slower.
Ideally, conv2(A,B) would be written such as A can be a 3D matrix (m x n p), where p is the number of separate 2D arrays to perform the convolution with B on.
Is there any way in Matlab to do such a thing currently, or would I need to write my own mex function?

 採用された回答

David Young
David Young 2015 年 8 月 7 日

1 投票

convn does exactly what you describe, given a 3-D array and a 2-D kernel.

1 件のコメント

Jonathan
Jonathan 2015 年 8 月 7 日
編集済み: Jonathan 2015 年 8 月 7 日
Yes, thanks, you are correct. From the docs, it sounded like both kernel and array would need to be of the same dimension.

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2015 年 8 月 7 日

0 投票

You can use pagefun() with conv2 with a gpuarray

1 件のコメント

Jonathan
Jonathan 2015 年 8 月 7 日
Does not work yet with pagefun. However, convn does do the same thing.

サインインしてコメントする。

質問済み:

2015 年 8 月 7 日

編集済み:

2015 年 8 月 7 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by