创建一个动态窗口以在 C# 中扫描图像



我是C#的初学者,我有一个荒谬的方法,如下所述。

如果我想创建一个 3x3 窗口并找到这 9 个像素的平均值,我按照这种方式操作:

IM[i - 1, j - 1]
IM[i - 1, j]
IM[i - 1, j + 1]
IM[i, j - 1]
IM[i, j + 1]
IM[i - 1, j - 1]
IM[i - 1, j]
IM[i - 1, j + 1]
IM[i, j]

如果我想创建一个 5x5 窗口并将其放在每个像素上以找到这 25 个像素的平均值,我遵循以下方式:

IM[i - 2, j - 2]
IM[i - 1, j - 2]
IM[i, j - 2]
IM[i + 1, j - 2]
IM[i + 2, j - 2]
IM[i - 2, j - 1]
IM[i - 1, j - 1]
IM[i, j - 1]
IM[i + 1, j - 1]
IM[i + 2, j - 1]
IM[i - 2, j]
IM[i - 1, j]
IM[i, j]
IM[i + 1, j]
IM[i + 2, j]
IM[i - 2, j + 1]
IM[i - 1, j + 1]
IM[i, j + 1]
IM[i + 1, j + 1]
IM[i + 2, j + 1]
IM[i - 2, j + 2]
IM[i - 1, j + 2]
IM[i, j + 2]
IM[i + 1, j + 2]
IM[i + 2, j + 2]

如果我想创建 7x7 或更多窗口,在 7x7 窗口中写入每个像素的位置太难了。

我想创建大小由用户定义的动态窗口。我该怎么做?有什么办法可以做到这一点吗?

您可以将此值(通过将 3 替换为您感兴趣的数字)扩展到任何大小的盒子。

for(int x=-3; x <= 3; x++)
{
    for (int y=-3; y <= 3; y++)
    {
        IM[i+ x, j + y] //theres your reference, if you're going to get the average you can add it to a sum or whatever
    }
}

相关内容

  • 没有找到相关文章

最新更新