【发布时间】:2021-06-25 06:15:33
【问题描述】:
我正在尝试在 matlab 中创建低通滤波器
我有一个大小为 12x6 的矩阵
56 147 56 52 147 52;
50 146 46 56 141 53;
59 142 145 147 147 46;
60 147 147 145 145 47;
52 145 35 47 146 52;
54 142 46 50 145 45;
56 52 56 52 56 52;
54 142 146 147 145 45;
59 142 53 45 147 46;
60 147 53 45 145 47;
52 145 124 145 142 52;
35 146 50 51 53 141;
首先我检查了矩阵到图像
M = [
56 147 56 52 147 52;
50 146 46 56 141 53;
59 142 145 147 147 46;
60 147 147 145 145 47;
52 145 35 47 146 52;
54 142 46 50 145 45;
56 52 56 52 56 52;
54 142 146 147 145 45;
59 142 53 45 147 46;
60 147 53 45 145 47;
52 145 124 145 142 52;
35 146 50 51 53 141;
];
f=uint8(M);
figure;imshow(f);title('Image from matrix');
图像看起来很小,因为矩阵大小也很小。
然后我用下面的代码做了这个迭代:
a=f;
b = size(M); % check size my matrix
n=5;
n1=ceil(n/2);
lpf=(1/n^2)*ones(n) % multiply with ones values of matrix;
c=0;
h=0;
for i=n1:b(1)-n1
for j=n1:b(2)-n1
p=1;
for k=1:n
for l=1:n
c=c+a(i-n1+k,j-n1+l)*lpf(l,l);
end
end
d(i,j)=c;
c=0;
end
end
e=uint8(d);
figure;imshow(e);title('low pass image');
结果存储在 e 变量中,当我检查它时,我的矩阵变得比以前更小,大小变为 9x3:
0 0 0
0 0 0
0 0 105
0 0 105
0 0 97
0 0 97
0 0 89
0 0 90
0 0 97
我错过了什么吗?
【问题讨论】:
-
您能解释一下为什么您期望得到不同的结果吗?您的原始矩阵大小为 12x6。新矩阵由
d(i,j)=c;和n1 <= i <= 12 - n1和n1 <= j <= 9 - n1和n1 = ceil(n/2) = 3创建。预期结果是一个大小为 7x1 的矩阵。您可以在从第三行开始的第三列中找到结果:105 105 97 97 89 90 97
标签: image matlab image-processing