算法优化-模板运算

本文探讨了在图像处理中的模板运算优化,特别是针对krisch算子的优化方法。通过避免重复运算,可以显著减少运算量。krisch算子涉及8个3x3模板,对每个像素及其8邻域进行运算,选取最大值作为像素的最终结果。

模板运算在图像处理中非常普遍,模板运算普遍运算量大,但可以通过避免其中许多重复的运算达到优化的效果,以下以krisch算子为例来说明如何避免重复运算,krisch算子包含8个3x3模板:

具体运算过程是对于源图像的每一个像素和它的8邻域与以上8个模板进行运算,共得出8个值,取其中最大的值作为该像素的最终值。

int cvKirsch(unsigned char* srcarr, unsigned char* dstarr, unsigned char* angle_mask, int width, int height)
{
	int i, j, k, l, m, n;
	unsigned char* _srcarr, *_dstarr, *_mask;

	//表示某一像素8邻域和该像素点的值
	int v00, v01, v10, v11, v20, v21, v30, v31, v40, v41, v50, v51, v60, v61, v70, v71, v80, v81; 
	
	//分别表示每一个模板计算出的该点像素值,最大者则为该点最终值
	int m0, m1, m2, m3, m4, m5, m6, m7;

	/*以下定义用于保存每一个列向量运算出的值,v0_5n3n3表示算子中第1列向量是(5,-3,-3),
	包含v0_5n3n3的算子有第1个算子v1_50n3表示算子中第2列向量是(5,0,-3),
	符合这个条件的有第1,2,8这3个算子;所以m0 = v0_5n3n3 + v1_50n3 + v2_5n3n3
	以此类推*/
	int v0_5n3n3, v1_50n3, v2_5n3n3; //M0
	int v0_n3n3n3, v2_55n3;//M1 
	int v1_n30n3, v2_555; //M2
	int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值