我指的是以下 paper并尝试实现 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 或中值滤波器方法,我们 需要设置一些参数和一个阈值。这 阈值取决于图像和噪声 密度。因此,要恢复不同的图像,我们需要检查 一系列阈值并找出最佳值。所以,在 我们提出的算法消除了定义阈值的需要。算法智能判断 阈值自动。
最佳答案
你试图实现的文章显然写得不好......
例如在算法中 w
意味着两件事:窗口的大小和白色像素的数量!!!
第 1 步和第 7 步都指的是同一个循环。
无论如何,对我来说,“脉冲像素”是所有等于 0 或 255 的像素。
基本上,它们是“椒盐”噪声的一部分的像素。
所以基本上,您可以通过以下方式找到它们:
[impulsepixelsY,impulasPixelX]=find((im==0)|(im==255));
关于algorithm - 在matlab中实现智能递归算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8700247/