c语言实现中值滤波

本文探讨了如何在不创建新数组且保持原始数组顺序的前提下,使用C语言实现中值滤波。作者指出常见的实现方式是复制数据到新数组,排序后找到中值,但这种方法被认为较繁琐。作者通过定义一个额外元素的数组distance来存储中值,避免了额外的排序操作。对于这种方法,作者欢迎有更好解决方案的读者分享交流。
摘要由CSDN通过智能技术生成

如何在不改变数组顺序,又不创建新数组的情况下进行中值滤波呢?

这个问题我在网上找了好久,都又创建了一个一样的数组,然后把数据复制过去,再排序找出中间值。我觉得这个办法是可以实现可是总觉得很麻烦。

那就只能自己想自己写了。

void middistance(float* distance)
{
    unsigned char count = 0, MarkNum, CompareNum, equal = 0,
    float midval = 0;
    for (MarkNum = 0; MarkNum < MAX_LDFEOFFSET; MarkNum++) {
		midval = distance[MarkNum];

		for (CompareNum = 0; CompareNum < MAX_LDFEOFFSET; CompareNum++) {
			if (MarkNum == CompareNum) {
				continue;
			}

			/*相等情况*/
			if (midval  == distance[CompareNum]) {
				equal++;

				if (equal == MAX_LDFEOFFSET / 2) {
					distance[MAX_LDFEOFFSET] = midval ;
					return;
				}
			}

			/*大于情况*/
			if (midval > distance[CompareNum]) {
				count ++;
			}

		}

		/* 判断大于和等于个数 */
		if ((count <= MAX_LDFEOFFSET / 2) && ((count + equal) >= MAX_LDFEOFFSET / 2)) {
			dist
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值