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,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或中值筛选方法,我们需要需要设置一些参数和阈值。这个阈值取决于图像和噪声密度。因此,要恢复不同的图像,我们需要检查一系列阈值,找出最佳值。所以,在我们提出的算法消除了定义阈值的需要。该算法是智能的,可以确定自动设置阈值。
您试图实现的文章显然写得不好…例如,在算法中,
步骤1和7都引用同一个循环。
无论如何,对我来说,"脉冲像素"都是等于0或255的像素A。
基本上,这些像素是"盐和胡椒"噪声的一部分。
所以,基本上,你可以通过以下方式找到它们:
1 |
从纸上看,"脉冲像素"似乎只是噪声像素,在盐和胡椒噪声的情况下。此外,该算法似乎还提供了一种"智能"机制来计算噪声像素的去噪值(如果其值高于阈值(该算法自适应计算)。
那么,"如果x(i,j)≠脉冲像素"呢?很明显,作者们假定知道哪些像素有噪声(!!)这使得整个事情变得很荒谬,因为这个信息几乎是不可能知道的。
我还可以补充说,论文中呈现的相当惊人的结果很可能是由于这个事实。
P.S.关于<"脉冲像素"是所有像素A(等于0或255>)的论点,是错误的。具有0或255强度值的像素集包括噪声像素以及恰好具有该值的适当像素。在这种情况下,算法很可能会崩溃,因为它也会将健康的像素去噪。