【发布时间】:2020-09-26 00:56:48
【问题描述】:
我正在尝试了解此代码 sn-p 用于创建可导向金字塔的作用:
th1[np.where(self.AT[i] - k*np.pi/self.K < -np.pi)] += 2.*np.pi
th1[np.where(self.AT[i] - k*np.pi/self.K > np.pi)] -= 2.*np.pi
ind_ = np.where(np.absolute(th1 - k*np.pi/self.K) <= np.pi/2.)
fil_[ind_] = self.ALPHAK * (np.cos(th1[ind_] - k*np.pi/self.K))**(self.K-1)
(https://github.com/TetsuyaOdaka/SteerablePyramid/blob/master/steerable_pyramid.py 中的完整代码(第 267-270 行)
我知道它创建了一个掩码的一半来构建定向过滤器,但是由于第一行没有旋转所有网格点,只是旋转了两组,然后使用索引来创建掩码,就像一个圆,但显然以某种方式遵守径向和角度分解所需的约束(https://www.cns.nyu.edu/pub/eero/simoncelli95b.pdf)。
但我很难理解这实际上是如何工作的。有人可以帮忙解释一下这些台词吗?
-
self.AT是已从笛卡尔坐标系转换为极坐标系的网格中的角度 -
k是旋转的分子(基本上是方向) -
self.K是分母(分成多少个部分的圆已经被切割)ALPHAK是归一化因子(尽管它背后的原因超出了我的理解)
(算法似乎从这里获取所有内容http://www.ipol.im/pub/art/2014/79/article.pdf)
【问题讨论】:
标签: python image-processing filtering