平均模糊蒙版产生不同的结果
问题描述:
将每个像素乘以平均模糊蒙版*(1/9),但结果完全不同。平均模糊蒙版产生不同的结果
PImage toAverageBlur(PImage a)
{
PImage aBlur = new PImage(a.width, a.height);
aBlur.loadPixels();
for(int i = 0; i < a.width; i++)
{
for(int j = 0; j < a.height; j++)
{
int pixelPosition = i*a.width + j;
int aPixel = ((a.pixels[pixelPosition] /9));
aBlur.pixels[pixelPosition] = color(aPixel);
}
}
aBlur.updatePixels();
return aBlur;
}
答
目前,你不是在申请的平均过滤器,你只用1/9的因素,这将使它更暗缩放图像。你的术语是好的,你正在尝试应用3x3移动平均值(或邻域平均值),也被称为boxcar过滤器。对于每个像素i,j,需要取(i-1,j-1),(i-1,j),(i-1,j + 1),(i,j (i + 1,j + 1),(i + 1,j + 1),(i + 1,j-1) (对于3x3的平均值)。为此,您不需要考虑图像边缘上没有9个邻居的像素(例如,以像素(1,1)为开始)。输出图像将成为每边较小的像素。或者,您可以镜像数值以在输入图像中添加额外的线条,从而使输出图像与原始图像具有相同的大小。
有更高效的方法来做到这一点,例如使用基于FFT的卷积;这些方法更快,因为它们不需要循环。
你想用这段代码实现什么? – 2011-03-26 12:06:49
@Jordaan Mylonas:平均模糊一个正常的图像 – 2011-03-26 12:08:19
“平均模糊”,据我所知,不是一个标准的,明确定义的术语。你能否详细说明或说明你的意思,因为可能有很多这个词的解释 – 2011-03-26 12:17:03