本文整理汇总了Python中cv2.DFT_SCALE属性的典型用法代码示例。如果您正苦于以下问题:Python cv2.DFT_SCALE属性的具体用法?Python cv2.DFT_SCALE怎么用?Python cv2.DFT_SCALE使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类cv2
的用法示例。
在下文中一共展示了cv2.DFT_SCALE属性的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: update
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import DFT_SCALE [as 别名]
def update(_):
ang = np.deg2rad( cv2.getTrackbarPos('angle', win) )
d = cv2.getTrackbarPos('d', win)
noise = 10**(-0.1*cv2.getTrackbarPos('SNR (db)', win))
if defocus:
psf = defocus_kernel(d)
else:
psf = motion_kernel(ang, d)
cv2.imshow('psf', psf)
psf /= psf.sum()
psf_pad = np.zeros_like(img)
kh, kw = psf.shape
psf_pad[:kh, :kw] = psf
PSF = cv2.dft(psf_pad, flags=cv2.DFT_COMPLEX_OUTPUT, nonzeroRows = kh)
PSF2 = (PSF**2).sum(-1)
iPSF = PSF / (PSF2 + noise)[...,np.newaxis]
RES = cv2.mulSpectrums(IMG, iPSF, 0)
res = cv2.idft(RES, flags=cv2.DFT_SCALE | cv2.DFT_REAL_OUTPUT )
res = np.roll(res, -kh//2, 0)
res = np.roll(res, -kw//2, 1)
cv2.imshow(win, res)
示例2: state_vis
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import DFT_SCALE [as 别名]
def state_vis(self):
f = cv2.idft(self.H, flags=cv2.DFT_SCALE | cv2.DFT_REAL_OUTPUT )
h, w = f.shape
f = np.roll(f, -h//2, 0)
f = np.roll(f, -w//2, 1)
kernel = np.uint8( (f-f.min()) / f.ptp()*255 )
resp = self.last_resp
resp = np.uint8(np.clip(resp/resp.max(), 0, 1)*255)
vis = np.hstack([self.last_img, kernel, resp])
return vis
示例3: correlate
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import DFT_SCALE [as 别名]
def correlate(self, img):
C = cv2.mulSpectrums(cv2.dft(img, flags=cv2.DFT_COMPLEX_OUTPUT), self.H, 0, conjB=True)
resp = cv2.idft(C, flags=cv2.DFT_SCALE | cv2.DFT_REAL_OUTPUT)
h, w = resp.shape
_, mval, _, (mx, my) = cv2.minMaxLoc(resp)
side_resp = resp.copy()
cv2.rectangle(side_resp, (mx-5, my-5), (mx+5, my+5), 0, -1)
smean, sstd = side_resp.mean(), side_resp.std()
psr = (mval-smean) / (sstd+eps)
return resp, (mx-w//2, my-h//2), psr
示例4: fftd
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import DFT_SCALE [as 别名]
def fftd(img, backwards=False, byRow=False):
# shape of img can be (m,n), (m,n,1) or (m,n,2)
# in my test, fft provided by numpy and scipy are slower than cv2.dft
# return cv2.dft(np.float32(img), flags=((cv2.DFT_INVERSE | cv2.DFT_SCALE) if backwards else cv2.DFT_COMPLEX_OUTPUT)) # 'flags =' is necessary!
# DFT_INVERSE: 用一维或二维逆变换取代默认的正向变换,
# DFT_SCALE: 缩放比例标识符,根据数据元素个数平均求出其缩放结果,如有N个元素,则输出结果以1/N缩放输出,常与DFT_INVERSE搭配使用。
# DFT_COMPLEX_OUTPUT: 对一维或二维的实数数组进行正向变换,这样的结果虽然是复数阵列,但拥有复数的共轭对称性
if byRow:
return cv2.dft(np.float32(img), flags=(cv2.DFT_ROWS | cv2.DFT_COMPLEX_OUTPUT))
else:
return cv2.dft(np.float32(img), flags=((cv2.DFT_INVERSE | cv2.DFT_SCALE) if backwards else cv2.DFT_COMPLEX_OUTPUT))
# 实部图像
示例5: ifft2
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import DFT_SCALE [as 别名]
def ifft2(img):
img = np.float32(img)
if img.ndim == 3:
out = cv2.dft(img, flags=cv2.DFT_INVERSE | cv2.DFT_SCALE)
elif img.ndim == 4:
out = []
for c in range(img.shape[2]):
out.append(cv2.dft(
img[:, :, c, :], flags=cv2.DFT_INVERSE | cv2.DFT_SCALE))
else:
raise Exception('only supports 3 or 4 dimensional array')
return out
示例6: ifft1
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import DFT_SCALE [as 别名]
def ifft1(img):
img = np.float32(img)
if img.ndim == 2:
img = img[np.newaxis, :, :]
out = cv2.dft(img, flags=cv2.DFT_ROWS | cv2.DFT_SCALE)
out = out.squeeze(0)
elif img.ndim == 3:
out = cv2.dft(img, flags=cv2.DFT_ROWS | cv2.DFT_SCALE)
else:
raise Exception('only supports 2 or 3 dimensional array')
return out
示例7: _linear_correlation
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import DFT_SCALE [as 别名]
def _linear_correlation(self, img):
C = cv2.mulSpectrums(
cv2.dft(img, flags=cv2.DFT_COMPLEX_OUTPUT), self.H, 0, conjB=True)
resp = cv2.idft(C, flags=cv2.DFT_SCALE | cv2.DFT_REAL_OUTPUT)
h, w = resp.shape
_, mval, _, (mx, my) = cv2.minMaxLoc(resp)
side_resp = resp.copy()
cv2.rectangle(side_resp, (mx - 5, my - 5), (mx + 5, my + 5), 0, -1)
smean, sstd = side_resp.mean(), side_resp.std()
psr = (mval - smean) / (sstd + self.cfg.eps)
return resp, (mx - w // 2, my - h // 2), psr
示例8: fftd
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import DFT_SCALE [as 别名]
def fftd(img, backwards=False):
# shape of img can be (m,n), (m,n,1) or (m,n,2)
# in my test, fft provided by numpy and scipy are slower than cv2.dft
return cv2.dft(np.float32(img), flags = ((cv2.DFT_INVERSE | cv2.DFT_SCALE) if backwards else cv2.DFT_COMPLEX_OUTPUT)) # 'flags =' is necessary!