在matlab中实现智能递归算法
那么我提到下面的文章,并试图实现在matlab中给出的算法
唯一的问题是我如何找到一个噪声像素,即带有脉冲噪声的像素 ?
X似乎是我必须计算的图像中的脉冲像素
_
____________________________________________
Input – Noisy Image h
_______________________________________________
Step 1: Compute X
for every pixel repeat steps from 2 to 7
Step 2: Initialize w = 3
Step 3: If X(i,j) ≠ Impulse pixel
goto step 7
Step 4: ∆i,j = { h(i1,j1) | i-(w-1)/2 ≤ i1 ≤ i+(w-1)/2,
j-(w-1)/2 ≤ j1 ≤ j+(w-1)/2}
b=no. of black pixels in the window
w=no. of white pixels in the window
Step 5: If ∆i,j ≠ NULL
p(i,j) = mean(∆i,j
)
d(i,j) = | h(i,j) – p(i,j) |
else if (w < wmax)
w=w+2
goto step 4
else
if (b>w)
h(i,j)=0
else
h(i,j)=255
Step 7: Goto next pixel
Step 8: Calculate threshold t, from detailed coefficient
matrix d
for every pixel
Step 9: If (d(i,j)>t)
h(i,j)=p(i,j)
____________________________
编辑:为了实现PSM或中值滤波器方法,我们需要设置一些参数和一个阈值。 该阈值取决于图像和噪声密度。 因此,为了恢复不同的图像,我们需要检查一系列阈值并找出最好的一个。 因此,在我们提出的算法中,我们删除了定义阈值的需要。 该算法是智能的,并自动确定阈值。
从纸张看来,“脉冲像素”只是噪声像素,在盐和胡椒噪声的情况下。 此外,似乎该算法提供了一种“智能”机制来计算噪声像素的降噪值,如果其值高于阈值(其自适应地计算)。
那么,如果“如果X(i,j)≠脉冲像素”? 显然,作者假设知道(!)哪些像素是嘈杂的(!!),这使得整个事情变得相当荒谬,因为这些信息几乎不可能知道。
我还可以补充一点,在论文中提出的相当惊人的结果很可能是由于这个事实。
PS关于<“脉冲像素”是等于0或255>的所有像素a的论点,这是错误的。 具有0或255强度值的像素集合包括噪声像素以及恰好具有这样的值的恰当像素。 在这种情况下,该算法很可能会崩溃,因为它也会消除健康像素。
你试图实现的文章显然写得很糟糕......例如在算法中, w
意味着两件事情:窗口的大小和白色像素的数量!
步骤1和步骤7都指向相同的循环。
无论如何,对我来说, “脉冲像素”都是等于0或255的所有像素a。
基本上,它们是属于“盐和胡椒”噪声的像素。
所以基本上,你可以通过这样做来找到它们:
[impulsepixelsY,impulasPixelX]=find((im==0)|(im==255));
链接地址: http://www.djcxy.com/p/13963.html
上一篇: Implementing the intelligent recursive algorithm in matlab