matlab - 如何将矩阵元素设置为周围元素的意思?

标签 matlab matrix octave

我有一个矩阵 X 表示受噪声影响的图像。我还有一个 bool 矩阵 M 表示哪些像素受到噪声的影响。我想要做的是将每个“损坏的”像素设置为其八个相邻像素的平均值。

保证损坏的像素始终被未损坏的像素包围,并且图像边界上的像素也不会损坏。我可以使用什么函数来编写它的矢量化版本?

最佳答案

对于您的情况,这应该执行得相当快

fixed = conv2 (image, [1 1 1; 1 0 1; 1 1 1]/8, "same")
# mask is a logical matrix for the corrupted pixels
image(mask) = fixed(mask)

说明:均值过滤器是通过 conv2 函数完成的。要计算像素及其相邻像素的平均值,使用的内核是 ones (3)/9,这意味着每个像素值的 1/9 用于计算新值。由于您不想计算平均值中的中心像素,因此将其值设置为 0(在内核中),将其他设置为 1/8。

关于matlab - 如何将矩阵元素设置为周围元素的意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15586068/

相关文章:

math - Coursera 机器学习 : Gradient Descent vectorization

windows - Octave : `char(97)` doesn't show result in console 中的奇怪问题

matlab - 将函数 fminunc 与逻辑回归的 BFGS 方法进行比较

validation - net.trainParam.max_fail

在 Matlab 中转置的 Python 创建的 HDF5 数据集

python - 我有 10000 个矢量形式的图像,如何将其转换为我的卷积神经网络?

assembly - 如何使用 SIMD 指令转置 16x16 矩阵?

matlab - 在Matlab中生成动画(AVI文件)而不显示图形

css - 检测 CSS 矩阵支持

machine-learning - 多个变量的梯度下降失败,导致 NaN