2d convolution returns empty result

3 ビュー (過去 30 日間)
xiaojuezi
xiaojuezi 2020 年 5 月 11 日
編集済み: Ameer Hamza 2020 年 5 月 11 日
I have an image matrix of size 512x512x3, for each pixel I would like to compute its weight as the average of the neighbouring pixels like below:
weight(y,x,:) = 0.25 * (I(y+1,x,:) + I(y-1,x,:) + I(y,x+1,:) + I(y,x-1,:))
I used the matlab conv2 function to avoid for loops, i.e.
kernel = [0,1,0;
1,0,1;
0,1,0]
weight = conv2(kernel, I)
As matlab uses zero padding for the convolution result, I would get the result of size 514x514. But I only want the parts that don't use zero padding:
weight = conv(kernel, I, 'valid')
Unfortunately, this returns empty result. Does anyone know how to solve this problem?
Thank you very much.

回答 (1 件)

Ameer Hamza
Ameer Hamza 2020 年 5 月 11 日
編集済み: Ameer Hamza 2020 年 5 月 11 日
For 'valid' option, reverse the order of I and kernel
I2 = conv2(I, kernel, 'valid');

カテゴリ

Help Center および File ExchangeGet Started with MATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by