双边滤波算法的简易实现bilateralFilter

没怎么看过双边滤波的具体思路,动手写一写,看看能不能突破一下。

最后,感觉算法还是要分开 水平 与 垂直 方向进行分别处理,才能把速度提上去。

没耐性写下去了,发上来,给大伙做个参考好了。

先上几张效果图。

半径参数为10.

见图,磨皮降噪效果还不错。

具体代码如下: 

void bilateralFilter(unsigned char* pSrc, unsigned char* pDest, int width, int height, int radius)
{
	float delta = 0.1f;
	float eDelta = 1.0f / (2 * delta * delta);

	int colorDistTable[256 * 256] = { 0 }; 
	for (int x = 0; x < 256; x++)
	{
		int  * colorDistTablePtr = colorDistTable + (x * 256);
		for (int y = 0; y < 256; y++)
		{
			int  mod = ((x - y) * (x - y))*(1.0f / 256.0f);
			colorDistTablePtr[y] = 256 * exp(-mod * eDelta);
		}
	} 
	for (int Y = 0; Y < height; Y++)
	{
		int Py = Y * width;
		unsigned char* LinePD = pDest + Py; 
		unsigned char* LinePS = pSrc + Py;
		for (int X = 0; X < width; X++)
		{
			int sumPix = 0;
			int sum = 0;
			int factor = 0;

			for (int i = -radius; i <= radius; i++)
			{
				unsigned char* pLine = pSrc + ((Y + i + height) % height)* width;
				int cPix = 0;
				int  * colorDistPtr = colorDistTable + LinePS[X] * 256;
				for (int j = -radius; j <= radius; j++)
				{
					cPix = pLine[ (X + j+width)%width];
					factor = colorDistPtr[cPix];
					sum += factor;
					sumPix += (factor *cPix);
				}
			}
			LinePD[X] = (sumPix / sum);
		}
	} 
}

 抛砖引玉一下,算法思路比较清晰。

懒得描述细节,代码很短,看代码吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习AI算法工程

《小美好》短评文本情感分析+生成词云

因为最近看了一下《致我们单纯的小美好》,虽然情节是有点“二”吧,但是看了觉得真的很怀念初高中的日子,一时玩心大发,于是就想搞点有意思的东西。。。首先去爬了豆瓣...

46790
来自专栏Spark学习技巧

第3篇:更新异常与规范化设计

第三篇:更新异常与规范化设计 前言 在前两篇中,主要讲了ER建模和关系建模。在具体分析如何用数据库管理软件RDBMS(Relational Database M...

49970
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

SSE图像算法优化系列二:高斯模糊算法的全面优化过程分享(二)。

      相关链接: 高斯模糊算法的全面优化过程分享(一)      在高斯模糊算法的全面优化过程分享(一)一文中我们已经给出了一种相当高性能的高斯模糊过程,...

49860
来自专栏PPV课数据科学社区

从0到1掌握R语言网络爬虫

引言 网上的数据和信息无穷无尽,如今人人都用百度谷歌来作为获取知识,了解新鲜事物的首要信息源。所有的这些网上的信息都是直接可得的,而为了满足日益增长的数据需求,...

55440
来自专栏落影的专栏

GPUImage详细解析(十一)美颜+人脸识别

前言 一个群友用琨君的美颜录制和讯飞离线人脸识别SDK做了一个demo,功能是录制视频,要求有美颜,并且能识别人脸并放置贴图。但是遇到一个问题: 录制过程能过...

53050
来自专栏深度学习与数据挖掘实战

干货|PyTorch实用代码段集锦

Facebook公司开源的深度学习框架PyTorch越来越火,PyTorch易于上手。本文节选github中PyTorch的常用实用代码片段,供大...

39370
来自专栏崔庆才的专栏

跟繁琐的模型说拜拜!深度学习脚手架 ModelZoo 来袭!

好多天没有更新原创文章了,国庆前的一段时间确实比较忙,整个九月在参加各种面试,另外还有公司的项目,还有自己的毕设,另外还需要准备参加一些活动和讲座,时间排的很紧...

41020
来自专栏逍遥剑客的游戏开发

有向无环图的自动布局算法

46550
来自专栏iOSDevLog

初探 Core ML:学习建立一个图像识别 App

75670
来自专栏小红豆的数据分析

acmer之路(3)四月第一周日志

这一周加入了院足球队,好久都没有感受到在赛场上奔腾的感觉了。不过正好赶上清明,因此也算有充足的时间来码代码。这个月一共码了20题,排名终于冲进了四万名。

13610

扫码关注云+社区

领取腾讯云代金券