中值滤波中位数优化算法

class MidSort(private val SIZE:Int=251) {
    private var index = 0
    private var medIndex=SIZE shr 1
    private val data=IntArray(SIZE)
    private val dataFlag=BooleanArray(SIZE){
        it<medIndex
    }
    private var medValue = 0
    fun init(v:Int):Int{
        data[index]=v
        if (dataFlag[index]) {
            if (v < medValue) {
                dataFlag[index] = false
                dataFlag[medIndex] = true
                medValue = v
                medIndex = index
                data.forEachIndexed { i, v ->
                    if (dataFlag[i].not() && v > medValue) {
                        medIndex = i
                        medValue = v
                    }
                }
            }
        } else {
            if (v > medValue) {
                dataFlag[index] = true
                medValue = v
                medIndex = index
                data.forEachIndexed { i, v ->
                    if (dataFlag[i] && v < medValue) {
                        medIndex = i
                        medValue = v
                    }
                }
                dataFlag[medIndex] = false
            }else if(index == medIndex&&medValue!=v){
                medValue = v
                data.forEachIndexed { i, v ->
                    if (dataFlag[i].not() && v > medValue) {
                        medIndex = i
                        medValue = v
                    }
                }
            }
        }
        index++
        if(index==SIZE){
            index=0
        }
        return medValue
    }
}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值