Procedurality.Channel.smooth C# (CSharp) Method

smooth() public method

public smooth ( int radius ) : Channel
radius int
return Channel
		public Channel smooth(int radius) {
			radius = Math.Max(1, radius);
			Channel filter = new Channel(width, height);
			float factor = 1f/((2*radius + 1)*(2*radius + 1));
			for (int y = 0; y < height; y++) {
				for (int x = 0; x < width; x++) {
					filter.putPixel(x, y, factor*getPixel(x, y));
				}
			}
			for (int x = radius; x < width - radius; x++) {
				int y = radius;
				float sum = 0f;
				for (int i = -radius; i < radius + 1; i++) {
					for (int j = -radius; j < radius + 1; j++) {
						sum += filter.getPixel(x + j, y + i);
					}
				}
				for (y++; y < height - radius; y++) {
					for (int j = -radius; j < radius + 1; j++) {
						sum -= filter.getPixel(x + j, y - radius - 1);
						sum += filter.getPixel(x + j, y + radius);
					}
					putPixel(x, y, sum);
				}
			}
			return this;
		}
	

Same methods

Channel::smooth ( int radius, Channel mask ) : Channel