Blur Function

BlitzPlus Forums/BlitzPlus Programming/Blur Function

RexRhino(Posted 2003) [#1]
OK, the following is supposed to be a simple blur effect on an image, but for some reason it is changing all pixels to a single color, instead of bluring. Anyone have any ideas on what might be the problem. I am pretty sure the problem is in this code.

Function simple_blur(image_in, depth, range)
	image_buffer = ImageBuffer(image_in)
	new_image = CreateImage(ImageWidth(image_in), ImageHeight(image_in))
	output_buffer = ImageBuffer(new_image)
	For z = 1 To depth
		For x = 1 To ImageWidth(image_in)
			For y = 1 To ImageHeight(image_in)
				For x2 = -range To range
					For y2 = -range To range
						red = red + GetRed(ReadPixel(x2,y2,image_buffer))
						blue = blue + GetBlue(ReadPixel(x2,y2,image_buffer))
						green = green + GetGreen(ReadPixel(x2,y2,image_buffer))
					Next
				Next
				divit = ((range * 2)^2)
				red = (red / divit)
				green = (green / divit)
				blue = (blue / divit)
				WritePixel x, y, GetRGB(red,green,blue), output_buffer
			Next
		Next
	Next
	FreeImage image_in
	Return new_image
End Function

Function GetRed(rgb) 
	Return rgb Shr 16 And %11111111 
End Function 

Function GetGreen(rgb) 
	Return rgb Shr 8 And %11111111 
End Function 

Function GetBlue(rgb) 
	Return rgb And %11111111 
End Function

Function GetRGB(red,green,blue)
	Return blue Or (green Shl 8) Or (red Shl 16)
End Function



Beaker(Posted 2003) [#2]
You aren't resetting red,green,blue to 0 each loop.

I reccommend doing one single ReadPixel (instead of 3) for speed.


RexRhino(Posted 2003) [#3]
Darn... I knew it was something simple like that! yikes!