画像のマトリックスがあり、次のことをしたいとします。
8x8
マトリックス上でウィンドウをスライドさせます- マトリックス内の各ピクセルの平均を計算します
matlab
matlabでのコーディングが初めての場合、どうすればそれを行うことができますか。
ありがとう。
conv2
のように、ones(8)
フィルタを使用できますI2 = conv2(I, 1.0 / 64.0 * ones(8), 'valid');
。「フィルター」が正規化されていないため、64.0 で割ります。
次のものも使用できますnlfilter
。
fun = @(x) mean(x(:));
ans= nlfilter(img,[8 8],fun);
しかし、@ s.bandaraが示唆したように、平均を計算するだけの方conv2
がはるかにconv2
高速です... withを使用すると、行列のサイズが変わることに注意してくださいvalid
。
nlfilter
経過時間は 0.433989 秒です。
conv2
経過時間は 0.000803 秒です。
conv2
したがって、平均を見つけるタスクのほうがはるかに高速であることは明らかです。
try to extract first the sub-matrices of your image like in here: MATLAB Submatrix
then use the mean(A) function for each submatrices