我有一个位图图像上下文并且想让它看起来模糊。所以我能想到的最好的事情是高斯算法,但我不太清楚这种高斯模糊算法是什么样子的?你知道这方面的好教程或例子吗?语言并不重要,如果它是手工完成的,没有过多使用特定于语言的 API。 IE。在 cocoa 中,幸运的人不需要考虑它,他们只是使用已经存在的 Imagefilter。但是我在 cocoa-touch(objective-c,iPhone OS)中没有这样的东西。
最佳答案
这其实很简单。你有一个滤波器模式(也称为滤波器内核)——一个带系数的(小)矩形阵列——只需计算 convolution图像和图案。
for y = 1 to ImageHeight
for x = 1 to ImageWidth
newValue = 0
for j = 1 to PatternHeight
for i = 1 to PatternWidth
newValue += OldImage[x-PatternWidth/2+i,y-PatternHeight/2+j] * Pattern[i,j]
NewImage[x,y] = newValue
模式只是二维高斯曲线或您喜欢的任何其他滤波器模式。您必须注意图像的边缘,因为滤镜图案将部分位于图像之外。您可以假设这些像素是黑色的,或者使用图像的镜像版本,或者任何看起来合理的东西。
最后一点,使用傅里叶变换计算卷积有更快的方法,但这个简单的版本应该足以进行第一次测试。
关于c++ - 模糊高斯算法是什么样的?有实现的例子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1326811/