高斯模糊算法

一维正态分布函数:


对应的曲线如下:


其实就是将某一像素点一定半径内的rgb值按照以上权重分布求出此点的rgb值。

图片像素是二维矩阵,修改如下:


对一个二维的像素矩阵可以分别在水平与垂直方向进行一维高斯模糊其效果等同与二维高斯模糊效果,速度更快。

测试图片如下:


代码如下:

void CGSmooth::generateGaussianKeneral( int radius,float sigma )
{
	float sigma22 = 2*sigma*sigma;
	float pi2 = 2.0*PI;
	float sqrtSigmaPi2 = sqrt(pi2) * sigma;
	int size = 2*radius + 1;
	int index = 0;
	m_gaussianKeneral = new float[size];
	float sum = 0.0f;
	for(int i = -radius; i <= radius; ++i)
	{
		float distance = i*i;
		m_gaussianKeneral[index] = exp((-distance)/sigma22) / sqrtSigmaPi2;
		sum += m_gaussianKeneral[index];
		++index;
	}

	for(i = 0; i < size; ++i)
	{
		m_gaussianKeneral[i] /= sum;
	}
}

int CGSmooth::clamp( float v )
{
	return (int)(v < 0 ? 0 : ( v > 255 ? 255 : v));
}

void CGSmooth::blur( int inPixels[], int outPixels[], int width, int height )
{
	int subCol = 0;  
	int index = 0, index2 = 0;  
	float redSum=0, greenSum=0, blueSum=0;  

	for(int row=0; row < height; row++)
	{
		int ta = 0, tr = 0, tg = 0, tb = 0;  
		index = row;  

		for(int col = 0; col < width; col++)
		{
			redSum = 0.0f;
			greenSum = 0.0f;
			blueSum = 0.0f;
			for(int m = -m_radius; m <= m_radius; m++)
			{
				subCol = col + m;
				if(subCol < 0 || subCol >= width)
				{
					subCol = 0;
				}

				index2 = row * width + subCol;
				ta = (inPixels[index2] >> 24) & 0xff;  
				tr = (inPixels[index2] >> 16) & 0xff;  
				tg = (inPixels[index2] >> 8) & 0xff;  
				tb = inPixels[index2] & 0xff; 

				redSum += (tr * m_gaussianKeneral[m + m_radius]);  
				greenSum += (tg * m_gaussianKeneral[m + m_radius]);  
				blueSum += (tb * m_gaussianKeneral[m + m_radius]); 
			}
			outPixels[index] = (ta << 24) | (clamp(redSum) << 16) | (clamp(greenSum) << 8) | clamp(blueSum); 
			index += height; 
		}
	}
}
代码参考http://blog.csdn.net/jia20003/article/details/9156935



CentOS是一款流行的Linux操作系统,适合部署各种类型的项目。若依是一个基于SpringBoot框架开发的通用权限管理系统,采用前后端分离的架构。下面将详细讲述如何在CentOS上部署若依前后端分离项目。 1.安装Java环境。 若依是基于Java开发的系统,所以需要安装Java环境。可通过以下命令进行安装: yum install java-1.8.0-openjdk-devel 2.安装MySQL数据库。 若依需要使用MySQL数据库进行数据存储。可通过以下命令进行安装: yum install mysql-server mysql 3.安装Nginx。 Nginx是一款高性能的Web服务器,也是实现前后端分离的关键组件。可通过以下命令进行安装: yum install nginx 4.部署若依后端。 将若依的后端代码部署到CentOS服务器上,并在MySQL数据库中创建对应的数据库和数据表。在application-*.yml配置文件中设置数据库连接信息和端口号等相关配置。 5.部署若依前端。 将若依前端代码部署到Nginx服务器上,并在Nginx配置文件中设置代理转发规则。例如,将/api开头的请求转发到后端的对应接口上。 6.启动服务。 分别启动后端服务和Nginx服务,可通过Systemd进行管理。在后端接口正常提供服务的情况下,可以通过浏览器访问Nginx服务器的IP地址和端口号,查看前端界面。 总之,通过上述步骤可以在CentOS服务器上成功部署若依前后端分离项目,实现良好的用户体验和数据存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值