在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

下一篇: Algorithm to detect corners of paper sheet in photo