函数输出大小错误

3次查看(最近30天)
汤姆•爱德华兹
汤姆•爱德华兹 2020年8月26日
我必须写一个函数,使图像文件模糊。
这个想法是取一个输入“img”,然后使用每个单独像素的值,以该像素为2*w+1子矩阵的中心取子矩阵的均值,并使用该值替换生成的新“模糊”图像中相同位置的像素。我希望这能讲得通。
这是我到目前为止写的,它似乎工作,但显然输出了一个1x9向量与错误的结果,我不知道为什么或如何修正它。任何帮助表示赞赏。
函数输出=模糊(img, w)
[row, col] = size(img);
img =双(img);
temp_img = 0(行,上校,“uint8”);
i = 1:行
j = 1:坳
r1 = max(1、我);
r2 = min(行,我+ w);
c1 = max(1、j-w);
c2 = min (col j + w);
temp_matrix = img (r1, r2, c1, c2);
val_2 =意味着(temp_matrix (:));
temp_img (r1, r2, c1, c2) = val_2;
结束
结束
输出= uint8 (temp_img);
结束

接受的答案

里克
里克 2020年8月26日
我不明白你为什么要储存结果 val_2 在多个位置,而不是只在 我,我
还有一件事我不明白,你为什么不用 convn (或 conv2 imfilter )来做这件事。这些会翻转内核,但由于您的内核应该是平的(因此是对称的),这并不重要。
1评论
汤姆•爱德华兹
汤姆•爱德华兹 2020年8月26日
实际上,你知道吗,我也是,我想我误解了作业,认为我们应该对整个子矩阵使用平均值。不管怎样,我刚刚纠正了它,它工作!谢谢里克。

登录评论。

更多的答案(0)

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!