我是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
}
}