基于EasyX图形界面库实现高斯模糊

好奇心来源于类似的图片

windows聚焦

在这里插入图片描述
这种类似的背景模糊称为高斯模糊,直白的说就是其视觉效果就像是经过一个毛玻璃在观察图像。
基于EasyX实现此效果
原理介绍:
所谓图像模糊就是让图像中的细节淡化,考虑到像素方面就是减少图像像素与周围像素差值,其效果可以简单的用计算平均值的方法实现
在这里插入图片描述
中间像素值为2,周围像素为1,如果想实现简单的模糊处理只需要把中间的像素值变成周围像素值的平均值,当然,此图处理半径为1个单位,但也可以扩大处理半径,原理也是相同。

但这样并不是最终的处理结果,虽然这种简单的方法可以实现大致的模糊,但图像处理后会显得不是很平滑。如果想实现更加平滑的模糊效果,可用以数学方法。
需要用到一种函数:高斯函数(二维正态分布)
在这里插入图片描述
在这里插入图片描述
可以用高斯函数对图像进行卷积处理,直白的说就是对刚才的平均值做加权处理,得到一个加权平均值,而上面的模型图直观的反映了每一块当中各个像素的权值,当然此图比较突兀,反映到图像上会是处理后的图像颜色相对集中,也就是白的更白,黑的更黑。这种程度可以通过调节参数sigma来改变。
具体实现
此方法基于EasyX,c语言实现,简单易懂。

1. 构建权值矩阵
利用高斯函数,u,v分别代表二维坐标,sigma值一般设0.7,当然可以自己设置(越小图像突兀程度越高),这样可以计算出每个模糊半径块中每个像素的权值,由于处理后图像颜色基调不能变,所以计算出权值后要给每个值都除以其权值之和,保证其矩阵之和为1.
在这里插入图片描述
注意坐标不是基于原图像的坐标,坐标只用来生成矩阵。(以上为半径为1的权值矩阵)
2.计算加权平均值
用周围像素值乘以其对应的权值在相加得到中心像素值,之后对图像的每一个像素做相同的处理即可。由于灰度图像可用一个像素值代替,因此处理一般图像需要分别计算RGB各颜色对应的像素值。

所用函数
DWORD * p GetImageBuffer(IMAGE *img); 获取绘图设备的显示缓冲区指针,用指针就可以操作每个像素了。
莱娜图最终测试效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值