这段Matlab代码的目的是通过应用低通滤波器来平滑水平直方图。
使用表示图像的相邻像素之间的灰度值的差的总和的第一水平和垂直直方图,逐列和逐行。水平直方图命名为horz1,因此horz1(i)= sum其中'i'是列号,'sum'是差值之和。然后,应用低通滤波器。我不明白'应用低通滤波器'部分。我对图像处理知之甚少。如果有人能帮助我理解,我会非常感激。
class Object
def reverse_rek
self
end
end
class Array
def reverse_rek
reverse.map{|element| element.reverse_rek }
end
end
端
答案 0 :(得分:0)
它只是找到41个元素窗口的平均值。低通滤波器可保留低频分量并抑制高频分量。平均是低通滤波器的一个例子。
计算滤波输出时,最后两个for
循环的解释如下。它从i = 21
开始,因为它需要在不超出范围之前和之后收集20个值,包括中间:20 + 20 + 1 = 41
。当i = 21
,然后是j = 1
到41
,然后是i = 22
,j = 2 to 42
等等,直至cols - 21
,因此{{1}最多j = cols - 41
。从技术上讲,我们应该在cols - 1
结束,但如果您想错过计算信号的最终有效输出,那就没问题。
由i = cols - 20
控制的循环确定窗口的中心是什么,由i
控制的循环收集由j
指示的正确样本。你需要考虑它,特别是如果你不习惯这个,但最终它会有意义。