中值滤波算法处理数字图像,去除椒盐噪声,图像变清晰,次数越多图像越模糊,但是怎么变回去呢?求反过程

中值滤波算法处理数字图像,去除椒盐噪声,图像变清晰,次数越多图像越模糊,但是怎么变回去呢?求反过程,第1张

中值滤波是非线性的,这个过程不可逆,如果你非常了解中值滤告磨轮波袜信的原理,应该是知道的。

要是真的想要返回去的话,可以试一下为每次中值滤波后的数据开辟新的内存,想返回的话就从游罩内存中提取前一步的数据。

谢谢你贴的代码,塌答这个FB写得真不错。

这个FB思路是这样的,建了个先入先出的队列(这儿叫堆栈,先入先出的结构应该叫队列),然后FB刷新一次,后面就补充一个当前值,如果队列满了,那么就把最旧的那个数据扔掉正运,在队列最后加上最新的数据。

流程如下:

1. 存入最新值

2. 开辟临时数组,为后面排序做准备。

3. 排序,把当前队列里的值按降序排列

4. 用数列的下标,把最中间下标那个值取出来,就是中间值了。(第三步排序过)

是降序还是升序我团清慧没仔细看,可能看错。

#include <iostream>

#include <iomanip>

using namespace std

int A[7][7]=

{{50,60,30,100,120,80,190},

{40,70,10,30,200,250,180},

{30,90,100,70,40,50,50},

{10,10,20,90,200,300,70},

{200,100,17,15,19,30,37},

{55,59,270,32,45,77,19},

{18,99,33,45,65,74,88}}

int Middle(int a,int b,int c)

{

int mid=a

if((mid-b)*(mid-c)>0)

mid=b

if((mid-a)*(mid-c)>0)

mid=c

return mid

}

int main()

{

int Mid[7][5],i,j

for(i=0i<7i++)

{

for(j=1j<6j++)

Mid[i][j-1]=Middle(A[i][j-1],A[i][j],A[i][j+1])

}

for(i=0i<7i++)

{

for(j=0j<团迟5j++)

cout<<饥烂setw(5)<<Mid[i][j]

cout<<endl

}

return 0

}

/塌肢李/希望是你想要的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8284170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存