关于image:在matlab中实现智能递归算法

Implementing the intelligent recursive algorithm in matlab

我参考了下面的文章并尝试实现Matlab中给出的算法

唯一的问题是如何找到有噪声的像素,即带有脉冲噪声的像素?

x似乎是图像中的脉冲像素,我必须计算

γ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
____________________________________________
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,jNULL
                    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或中值筛选方法,我们需要需要设置一些参数和阈值。这个阈值取决于图像和噪声密度。因此,要恢复不同的图像,我们需要检查一系列阈值,找出最佳值。所以,在我们提出的算法消除了定义阈值的需要。该算法是智能的,可以确定自动设置阈值。


您试图实现的文章显然写得不好…例如,在算法中,w意味着两件事:窗口的大小和白色像素的数量!!!!

步骤1和7都引用同一个循环。

无论如何,对我来说,"脉冲像素"都是等于0或255的像素A。

基本上,这些像素是"盐和胡椒"噪声的一部分。

所以,基本上,你可以通过以下方式找到它们:

1
[impulsepixelsY,impulasPixelX]=find((im==0)|(im==255));


从纸上看,"脉冲像素"似乎只是噪声像素,在盐和胡椒噪声的情况下。此外,该算法似乎还提供了一种"智能"机制来计算噪声像素的去噪值(如果其值高于阈值(该算法自适应计算)。

那么,"如果x(i,j)≠脉冲像素"呢?很明显,作者们假定知道哪些像素有噪声(!!)这使得整个事情变得很荒谬,因为这个信息几乎是不可能知道的。

我还可以补充说,论文中呈现的相当惊人的结果很可能是由于这个事实。

P.S.关于<"脉冲像素"是所有像素A(等于0或255>)的论点,是错误的。具有0或255强度值的像素集包括噪声像素以及恰好具有该值的适当像素。在这种情况下,算法很可能会崩溃,因为它也会将健康的像素去噪。